[英]How to connect MySQL with Docker using Navicat or MySQL Workbench?
我正在使用 MySQL Docker 映像,我可以使用mysqli_connect('mysql', 'docker', 'docker');
在php中
這是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 Access denied for user 'docker'@'%%' (using password: YES)
主機:127.0.0.1,用戶:docker,pass:docker Access denied for user 'docker'@'%%' (using password: YES)
主機:172.17.0.2,用戶:docker,pass:docker Can't connect to MySQL server on '172.17.0.2
所有人都收到Access denied for user 'docker'@'%%' (using password: YES)
如果我嘗試將用戶從docker更改為root ,則錯誤變為Access denied for user 'docker'@'172.17.0.1' (using password: YES)
我之前找到了一些文章,並按照他們的步驟進行操作,但總是失敗。 我不知道我錯在哪里
這是一些截圖
更新我無法從本地 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 -udocker -p --portocol=tcp
在終端中使用命令連接到 mysql
更多細節
錯誤消息是Access denied for user 'docker'@'%%' (using password: YES)
,它said @'%%'
,我知道 '%' 是什么,但 '%%' 是什么意思?
請嘗試將主機作為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 外部連接,請嘗試使用主機作為localhost
或127.0.0.1
或您的公共docker ip
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.