我创建了一个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版本,但这不起作用。获取随机密码有效,我不知道为什么。我也不能使用随机密码,因为这是一个学校项目,必须遵循一些准则。我已经花了几个小时在此上,任何帮助都值得赞赏。
答案 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在两个不同的容器上
希望对您有帮助