Docker容器无法连接到其mysql服务器(拒绝访问)

时间:2019-12-18 08:51:56

标签: mysql docker dockerfile docker-machine

我创建了一个docker容器及其mysql服务器,如下所示:

docker run -d\
    --name mysql-server
    --restart on-failure\
    -e MYSQL_ROOT_PASSWORD=1234\
    -e MYSQL_DATABASE=users\
    -v volume1:/var/lib/mysql\
    mysql:latest --default-authentication-plugin=mysql_native_password

但是当我尝试登录时,出现访问被拒绝错误。这是我尝试登录mysql服务器的方式:

docker exec -it spawning-pool mysql -uroot -p

这是我得到的答复:

Enter password: (I put 1234 here)
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

docker ps -a显示:

6909b7003519        mysql:latest        "docker-entrypoint.s…"   38 minutes ago      Up 38 
    minutes            3306/tcp, 33060/tcp    mysql-server

docker exec mysql-server env显示:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=6909b7003519
    MYSQL_ROOT_PASSWORD=1234
    MYSQL_DATABASE=users
    GOSU_VERSION=1.7
    MYSQL_MAJOR=8.0
    MYSQL_VERSION=8.0.18-1debian9
    HOME=/root

我尝试更改mysql版本,但这不起作用。获取随机密码有效,我不知道为什么。我也不能使用随机密码,因为这是一个学校项目,必须遵循一些准则。我已经花了几个小时在此上,任何帮助都值得赞赏。

2 个答案:

答案 0 :(得分:0)

似乎您必须更改密码并使用现有卷运行该命令,因此不会将新密码设置为Docker MySQL映像的默认行为。

您有两个选择

  • 尝试删除卷并运行容器
docker volume rm volume1 && docker run -it --rm -v volume1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345 -e MYSQL_DATABASE=users mysql:latest --default-authentication-plugin=mysql_native_password
  • 尝试使用在创建卷时设置的旧密码运行

答案 1 :(得分:0)

登录到您的docker计算机并检查mysql服务器是否正在运行。 我有类似的问题。在我的情况下,MySQL服务器在容器运行后启动。 帮助:

ENTRYPOINT service mysql start && /bin/bash

Here是具有两个服务的完整工作示例:apache和mysql在两个不同的容器上

希望对您有帮助