如何将 mysql 工作台连接到在 docker 中运行 mysql?

新手上路,请多包涵

我在 docker 容器内使用 mysql 服务器并且能够在 docker 内访问。如何在我的本地(主机)上运行的 mysql 工作台中创建连接。

原文由 Pawan Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 340
1 个回答

默认情况下,部署后 MySQL 有以下连接限制:

 mysql> select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
4 rows in set (0.00 sec)

显然,出于安全目的,您将无法在 docker 映像之外连接到它。如果您需要更改它以允许 root 从任何主机连接(例如,出于开发目的),请执行以下操作:

  1. 使用所需的所有端口映射启动 mysql 映像:

docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7

或者,如果需要完整的端口映射:

 docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7

  1. 如果这是全新安装 - 获取默认密码:

docker logs mysql57 2>&1 | grep GENERATED

  1. 使用 mysql 客户端直接连接到docker中的mysqld:

docker exec -it mysql57 mysql -uroot -p

  1. 如果这是全新安装,系统将要求您使用 ALTER USER 命令更改密码。去做吧。

  2. 运行 SQL:

update mysql.user set host = '%' where user='root';

  1. 退出 mysql 客户端。

  2. 重启容器:

docker restart mysql57

现在您将能够从 MySQL Workbench 连接到

host: `0.0.0.0`
port: `3306`

完成所有更改后,查询将显示:

 select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+

原文由 Andrey Lebedenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题