我尝试使用
MySQL
启动 docker-compose
服务器。这是docker-compose.yaml
部分:
mysql:
restart: always
image: mysql:latest
ports:
- "3306:3306"
volumes:
- /Users/user/Documents/.docker/mysql/config:/etc/mysql/
- /Users/user/Documents/.docker/mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD='123'
- MYSQL_ROOT_HOST='172.18.0.1'
您会看到我已经按照here所述指定了root密码和主机。然后我尝试连接到数据库(如果重要的话使用 Intellij Idea):
jdbc:mysql://localhost:3306/?user=root&password=123&ssl=false
但它不接受凭据并写入日志:
Access denied for user 'root'@'172.18.0.1' (using password: YES)
请告知如何修复它。谢谢。
很可能当这些不同时你已经初始化了 mysql 数据目录:
environment:
- MYSQL_ROOT_PASSWORD='123'
- MYSQL_ROOT_HOST='172.18.0.1'
MySQL 映像仅在创建 /var/lib/mysql 目录时尊重这些变量。
因此,如果您不关心数据,请清空卷:
/Users/user/Documents/.docker/mysql/data
,或从 mysql 终端手动更改凭据。
如果不在生产环境中,您还可以将以下内容与 docker run 一起使用 -e MYSQL_ROOT_HOST=% 另外,创建自己的 docker 网络会更好
我在连接 Django 时遇到了同样的问题。后来在得到很少的答案后,能够通过删除图像创建的“体积”来解决。它从卷中选择旧的用户名和密码,这就是为什么即使在重建映像后它也无法工作的原因。
以我为例
dataSource.setCatalog(...)
有帮助。