使用docker compose文件生成的MariaDB Container(10.9最新图像(出现了一个非常奇怪的情况。
容器全部工作,如果我访问容器的shell,我可以运行mysql-uroot-p并使用我的密码访问mysql。
我把端口3306插到我的M2 Mac上;根@'localhost'的访问被拒绝"当尝试mysql-h127.0.0.1-u根-p和相同的密码时。
但是,如果我将密码字段留空,它就会连接。我不知道为什么!我想可能是root@'%'有一个空白密码,但我已经尝试将其设置为相同的密码。但不管怎样,我都希望访问被拒绝的消息说我正在使用root@'%'
我已尝试重建映像,删除卷。我发现一个关于MYSQL_PWD的github问题是空白的,所以我添加了这个问题,但它仍然不能很好地发挥作用。
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: dev_db
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_PWD: password
ports:
- "3306:3306"
volumes:
- data-volume:/var/lib/mysql
以前有人遇到过这种情况吗,或者有什么建议如何解决?这就像根@'localhost'以某种方式配置了两个不同的凭据?
当您在容器内连接到mysql/mariadb时,该实例不会认为您来自"localhost"。请参阅下面的测试方法。所以,如果您看到一个错误,说"root"@"localhost",那肯定是因为您连接到的是在主机上运行的进程,而不是在容器内。
运行测试容器
docker run -d --rm --name testmariadb -P
-e MYSQL_RANDOM_ROOT_PASSWORD=true
mariadb:latest
检查端口:
export MARIADB_PORT=$(docker inspect testmariadb --format='{{range $k, $v := .NetworkSettings.Ports}}{{with index $v 0}}{{.HostPort}}{{end}}{{end}}')
echo Container running on port ${MARIADB_PORT}
尝试连接并检查错误
mysql -h127.0.0.1 -P${MARIADB_PORT} -uroot
你应该看到类似的东西:
ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.1' (using password: NO)
清理
docker container rm -f testmariadb