我有使用mysql/mysql-server docker镜像的问题。 我想连接到MySQL服务器,创建数据库,用户与所有特权有能力创建新的架构,并在未来运行liquibase。无法连接到mysql docker镜像
我运行容器是这样的:
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),它与失败:
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: null, message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server" -> [Help 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
与管理员用户有错误创造新的模式,它貌似管理员只测试数据库的访问:
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: Access denied for user 'admin'@'%' to database 'test2' -> [Help 1]
与根以下错误:
[ERROR] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
也试过设置权限在init命令管理:
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;'
在这情况下为根用户有错误:
[ERROR] Failed to execute goal org.codehaus.mojo:sql-maven-plugin:1.5:execute (default-cli) on project db: null, message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server" -> [Help 1]
的管理员 - 以下内容:
12:13:57 [ERROR] The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
还试图用本地主机,127.0.0.1作为主机数据库,总是有误差的连接。 任何想法?
除非你使用的是这里没有提到对数据的外部存储卷,每个'搬运工run'可以创建新的数据访问商店。你可能想尝试使用'docker exec'而不是'docker run'运行'CREATE USER'尝试。这将使用已经运行的容器,而不是创建另一个新的容器。 –
难点在于我想在Jenkins工作中运行Docker镜像。 而在詹金斯,我无法为docker exec打开-ti模式。 –
所以,我可以这样添加用户: '须藤搬运工运行--name分贝-e MYSQL_ROOT_PASSWORD = qwe123 -e MYSQL_DATABASE =测试-d -p 3306:3306的MySQL/MySQL的服务器:5.6 --lower的病例表 - names = 1 docker exec -ti db mysql -uroot -pqwe123 CREATE USER'admin' @'localhost' IDENTIFIED BY“qwe123”; 授予*。*到'admin' @'localhost'的所有特权与授予选项; CREATE USER'admin' @'%'IDENTIFIED BY“qwe123”; 授予*上的所有特权。*使用授权选项到'admin' @'%' FLUSH PRIVILEGES;' –