Docker 容器无法连接到其 mysql 服务器(拒绝访问)
Docker container can't connect to its mysql server (ACCESS DENIED)
我创建了一个 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 版本,但这不起作用。获取随机密码有效,我不知道为什么。我也不能使用随机密码,因为这是一个学校项目,我必须遵循一些指导方针。我已经为此花费了数小时,非常感谢任何帮助。
似乎您必须更改密码和 运行 现有卷的命令,因此它不会将新密码设置为 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
- 尝试运行使用在创建卷时设置的旧密码
登录到您的 docker 机器并检查 mysql 服务器 运行ning。
我有类似的问题。在我的情况下 MySQL 服务器在容器 运行 之后启动。
已帮助:
ENTRYPOINT service mysql start && /bin/bash
Here 是两个服务器的完整工作示例:apache 和 mysql 在两个不同的容器上
希望对你有所帮助
我创建了一个 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 版本,但这不起作用。获取随机密码有效,我不知道为什么。我也不能使用随机密码,因为这是一个学校项目,我必须遵循一些指导方针。我已经为此花费了数小时,非常感谢任何帮助。
似乎您必须更改密码和 运行 现有卷的命令,因此它不会将新密码设置为 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
- 尝试运行使用在创建卷时设置的旧密码
登录到您的 docker 机器并检查 mysql 服务器 运行ning。 我有类似的问题。在我的情况下 MySQL 服务器在容器 运行 之后启动。 已帮助:
ENTRYPOINT service mysql start && /bin/bash
Here 是两个服务器的完整工作示例:apache 和 mysql 在两个不同的容器上
希望对你有所帮助