docker-compose 中的 MySQL -- 访问被拒绝

问题描述 投票:0回答:4

我尝试使用

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 docker docker-compose localhost
4个回答
20
投票

很可能当这些不同时你已经初始化了 mysql 数据目录:

environment:
- MYSQL_ROOT_PASSWORD='123'
- MYSQL_ROOT_HOST='172.18.0.1'

MySQL 映像仅在创建 /var/lib/mysql 目录时尊重这些变量。

因此,如果您不关心数据,请清空卷:

/Users/user/Documents/.docker/mysql/data
,或从 mysql 终端手动更改凭据。


0
投票

如果不在生产环境中,您还可以将以下内容与 docker run 一起使用 -e MYSQL_ROOT_HOST=% 另外,创建自己的 docker 网络会更好


0
投票

我在连接 Django 时遇到了同样的问题。后来在得到很少的答案后,能够通过删除图像创建的“体积”来解决。它从卷中选择旧的用户名和密码,这就是为什么即使在重建映像后它也无法工作的原因。


-1
投票

以我为例

dataSource.setCatalog(...)

有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.