首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Navicat或MySQL工作台将MySQL与Docker连接?

问如何使用Navicat或MySQL工作台将MySQL与Docker连接?
EN

Stack Overflow用户
提问于 2019-05-29 09:00:14
回答 1查看 4.9K关注 0票数 0

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

这是docker ps

代码语言:javascript
复制
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时,我使用--link mysql选项。

MySQL码头的IP为172.17.0.2。

我的mac的IP是192.168.1.50

这里是mysql中的用户:

代码语言:javascript
复制
mysql> select User, Host from mysql.user;
+--------+-----------+
| User   | Host      |
+--------+-----------+
| docker | %         |
| root   | localhost |
+--------+-----------+
2 rows in set (0.00 sec)

然后,我尝试将mysql与navicat和mysql-workbench连接起来。

主机:192.168.1.50,用户:码头,通行证:码头Access denied for user 'docker'@'%%' (using password: YES)

主机:127.0.0.1,用户:码头,通行证:码头Access denied for user 'docker'@'%%' (using password: YES)

主机:172.17.0.2,用户:码头,通行证:码头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)。

我以前找到了一些文章,也跟着他们走了一步,但总是失败。我不知道我错在哪里

这里有一些截图

​

​

​

​

​

​

更新i不能从本地切换到停靠,并且在对接中没有ping命令,所以我不能对ping进行从对接到本地的测试。

代码语言:javascript
复制
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 @'%%',我知道'%‘是什么,但是’%‘的意思是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 09:03:42

请尝试主机作为mysql,而不是从连接的容器本地主机。如果您在windows上,请尝试将192.168.99.100作为主机。

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

代码语言:javascript
复制
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。

如果您尝试从外部连接,请尝试将主机作为localhost或127.0.0.1或您的公共docker ip进行连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56356781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档