无法连接到mysql docker image

时间:2017-01-17 15:11:34

标签: mysql jenkins docker liquibase docker-container

我有使用mysql / mysql-server docker image的问题。 我想连接到mysql服务器,创建数据库,具有所有PRIVILEGES的用户能够创建新模式并在将来运行liquibase。

我像这样运行容器:

sudo docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test \
  -d -p 3306:3306 mysql/mysql-server:5.6 --lower-case-table-names=1

当我docker ps时,我发现它正在运行但是当我尝试运行liquibase(使用root / qwe123)时,它失败了:

  

[错误]无法执行目标org.codehaus.mojo:sql-maven-plugin:1.5:在项目db:null上执行(default-cli),来自服务器的消息:" Host' 172.17 .0.1'不允许连接到这个MySQL服务器" - > [帮助1]

尝试用户:

sudo docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test \
  -e MYSQL_USER=admin -e MYSQL_PASSWORD=qwe123 -d -p 3306:3306 \
  mysql/mysql-server:5.6 --lower_case_table_names=1

如果管理员用户在创建新架构时出错,则看起来管理员只能访问测试数据库:

  

[错误]无法执行目标org.codehaus.mojo:sql-maven-plugin:1.5:在项目数据库上执行(default-cli):访问被拒绝用户' admin' @&#39 ;%'到数据库' test2' - > [帮助1]

root用户出现以下错误:

  

[ERROR]成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。无法读取服务器的响应。预计读取4个字节,在连接意外丢失之前读取0个字节。

还尝试在init命令中为admin设置权限:

docker run --name db -e MYSQL_ROOT_PASSWORD=qwe123 -e MYSQL_DATABASE=test -d \
  -p 3306:3306 mysql/mysql-server:5.6 --lower_case_table_names=1 \
 '--init-connect=CREATE USER `admin`@`localhost` IDENTIFIED BY "qwe123"; GRANT ALL PRIVILEGES ON *.* TO `admin`@`localhost` WITH GRANT OPTION; CREATE USER `admin`@`%` IDENTIFIED BY "qwe123";GRANT ALL PRIVILEGES ON *.* TO `admin`@`%` WITH GRANT OPTION;FLUSH PRIVILEGES;'

在这种情况下,root用户有错误:

  

[错误]无法执行目标org.codehaus.mojo:sql-maven-plugin:1.5:在项目db:null上执行(default-cli),来自服务器的消息:" Host' 172.17 .0.1'不允许连接到这个MySQL服务器" - > [帮助1]

for admin - 以下内容:

  

12:13:57 [错误]成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。无法读取服务器的响应。预计读取4个字节,在连接意外丢失之前读取0个字节。

还尝试使用localhost和127.0.0.1作为DB的主机,始终出现连接错误。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您应该允许MySQL中的用户从主机的IP连接。 在MySQL中更改用户后不要忘记刷新权限

GRANT CREATE USER ON *.* TO 'root'@'%';

然后重启mysql实例

还有机会通过my.cnf将mysql绑定到127.0.0.1。如果是这样 - 将绑定更改为0.0.0.0以通过任何IP

访问它