java.sql.SQLException: отказано в доступе пользователю ‘guacamole’ @’172.17.0.4′ в Guacamole Docker

#java #mysql #docker #guacamole

#java #mysql #docker #гуакамоле

Вопрос:

Я новичок в гуакамоле так же, как и в docker. Я использую mysql для аутентификации.

Команды, которые я пытаюсь выполнить, упомянуты ниже

 docker run --name some-guacd -d guacamole/guacd
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
docker run --name some-guacamole --link some-guacd:guacd --link some-mysql:mysql -e MYSQL_DATABASE=guacamole -e MYSQL_USER=guacamole -e MYSQL_PASSWORD=some_password -e MYSQL_ROOT_PASSWORD=root -v /local/path:/etc/guacamole -e GUACAMOLE_HOME=/etc/guacamole -d -p 8080:8080 guacamole/guacamole
  

но я получаю приведенное ниже исключение.

 Fri Mar 22 07:59:36 UTC 2019 WARN: Establishing SSL connection without 
server's identity verification is not recommended. According to MySQL 
5.5.45 , 5.6.26  and 5.7.6  requirements SSL connection must be established 
by default if explicit option isn't set. For compliance with existing 
applications not using SSL the verifyServerCertificate property is set to 
'false'. You need either to explicitly disable SSL by setting useSSL=false, 
or set useSSL=true and provide truststore for server certificate 
verification.
Fri Mar 22 07:59:36 UTC 2019 WARN: Establishing SSL connection without 
server's identity verification is not recommended. According to MySQL 
5.5.45 , 5.6.26  and 5.7.6  requirements SSL connection must be established 
by default if explicit option isn't set. For compliance with existing 
applications not using SSL the verifyServerCertificate property is set to 
'false'. You need either to explicitly disable SSL by setting useSSL=false, 
or set useSSL=true and provide truststore for server certificate 
verification.
07:59:36.126 [http-nio-8080-exec-7] ERROR o.a.g.rest.RESTExceptionMapper - 
Unexpected internal error:
### Error querying database.  Cause: java.sql.SQLException: Access denied 
for user 'guacamole'@'172.17.0.4' (using password: YES)
### The error may exist in 
org/apache/guacamole/auth/jdbc/user/UserMapper.xml
### The error may involve 
org.apache.guacamole.auth.jdbc.user.UserMapper.selectOne
### The error occurred while executing a query
### Cause: java.sql.SQLException: Access denied for user 
'guacamole'@'172.17.0.4' (using password: YES)
  

И мой guacamole.properties

 guacd-hostname:localhost
guacd-port:4822
lib-directory:/var/lib/guacamole/classpath

#basic-user-mapping:/etc/guacamole/user-mapping.xml
#auth-provider: 
net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvide
auth-   
provider:net.sourceforge.guacamole.net.auth.mysql
.MySQLAuthenticationProvider
mysql-hostname:127.0.0.1
mysql-port:3306
mysql-database:guacamole
mysql-username:guacamole
mysql-password:some_password
  

Я не уверен, что я делаю не так?

Ответ №1:

У Guacamole нет MYSQL_ROOT_PASSWORD переменной окружения, как у контейнера MySQL. Вместо этого вы указываете имя пользователя и пароль для подключения. Самый простой способ заставить контейнеры работать друг с другом был бы следующим:

 docker run --name some-guacd -d guacamole/guacd
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=guacamole -d mysql:latest
docker run --name some-guacamole --link some-guacd:guacd --link some-mysql:mysql -e MYSQL_DATABASE=guacamole -e MYSQL_USER=root -e MYSQL_PASSWORD=root -v /local/path:/etc/guacamole -e GUACAMOLE_HOME=/etc/guacamole -d -p 8080:8080 guacamole/guacamole
  

Я удалил MYSQL_ROOT_PASSWORD переменную и обновил другие переменные среды, чтобы отразить вашу конфигурацию MySQL. Я также обновил переменные среды контейнера MySQL, чтобы создать базу данных, в которую вы хотите поместить данные о гуакамоле.

Следует отметить одну важную вещь: небезопасно запускать Guacamole с корневым пользователем MySQL. Я бы рекомендовал создать нового пользователя базы данных для запуска Guacamole под именем и предоставить ему соответствующие разрешения для базы данных.