gpt4 book ai didi

mysql - 如何使用 Navicat 或 MySQL Workbench 将 MySQL 与 Docker 连接?

转载 作者:行者123 更新时间:2023-11-29 15:57:46 25 4
gpt4 key购买 nike

我正在使用 MySQL Docker 镜像,我可以使用 php 中的 mysqli_connect('mysql', 'docker', 'docker'); 连接到此 Docker

这是docker ps:

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                          NAMES
c271f8e68378 afraidjpg/nginx:nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp, 0.0.0.0:10086->10086/tcp nginx
92d7c923f777 afraidjpg/php:php56 "docker-php-entrypoi…" 2 hours ago Up 2 hours 0.0.0.0:9000->9000/tcp php
68b818bd68c4 afraidjpg/mysql:mysql "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

启动 PHP Docker 时我使用 --link mysql 选项。

MySQL Docker的IP是172.17.0.2

我的Mac的IP是192.168.1.50

这是 mysql 中的用户:

mysql> select User, Host from mysql.user;
+--------+-----------+
| User | Host |
+--------+-----------+
| docker | % |
| root | localhost |
+--------+-----------+
2 rows in set (0.00 sec)

然后我尝试用navicat和mysql-workbench连接mysql

主机:192.168.1.50,用户:docker,pass:docker 用户'docker'@'%%'访问被拒绝(使用密码:YES)

主机:127.0.0.1,用户:docker,pass:docker 用户'docker'@'%%'访问被拒绝(使用密码:YES)

主机:172.17.0.2,用户:docker,pass:docker 无法连接到'172.17.0.2上的MySQL服务器

所有人都收到错误用户'docker'@'%%'访问被拒绝(使用密码:YES)

如果我尝试将用户从docker更改为root,错误将变为访问被拒绝用户'docker'@'172.17.0.1'(使用密码:YES)

我之前找过一篇文章,按照他们的步骤操作,但总是失败。我不知道我哪里错了

这是一些屏幕截图

enter image description here

enter image description here

enter image description here

更新我无法从本地 ping 到 docker,并且 docker 中没有 ping 命令,因此无法进行从 docker ping 到本地的测试

zk ~/Documents/PHP/www/docker $ ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

更多更新

我可以使用终端中的命令连接到mysql mysql -udocker -p --portocol=tcp

更多详情

错误消息是用户'docker'@'%%'访问被拒绝(使用密码:YES),它说@'%%',我知道什么'%' 是,但是 '%%' 是什么意思?

最佳答案

请尝试将主机作为 mysql 而不是连接容器中的 localhost。如果您使用的是 Windows,请尝试使用 192.168.99.100 作为主机。

如果仍然有问题,请尝试使用 mysql-compose.yml 重新测试

version: "3.1"
services:

mysql:
image: mysql:5.7.22
command: "--innodb_use_native_aio=0"
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
env_file:
- .env
ports:
- "3306:3306"
volumes:
- /var/database/docker/common:/var/lib/mysql
networks:
- mysqlnet
- mysqlnetfpm

networks:
mysqlnet:
driver: bridge
mysqlnetfpm:
driver: bridge

注意:在运行新的 mysql 容器之前,不要忘记删除旧的 mysqldata 文件。

现在您可以使用用户名作为root,密码作为root,并且对于内部容器(附加容器)使用主机作为mysql。

如果您尝试从 Docker 外部进行连接,请尝试使用主机作为 localhost127.0.0.1 或您的公共(public) docker IP

关于mysql - 如何使用 Navicat 或 MySQL Workbench 将 MySQL 与 Docker 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56356781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com