簡體   English   中英

無法將在 docker 上運行的 Mysql 8 與 mysql 工作台連接

[英]Unable to connect Mysql 8 running on docker with mysql workbench

我有一個運行 Mysql 8 的 docker 設置。

我能夠訪問 docker 容器內的 Mysql,但是,我無法使用 Mysql 工作台進行連接。 我有另一個 mysql 容器,但這個是 Mysql 5.7 版,我與那個連接沒有問題。

我試圖在 mysql.user 中允許 root 用戶使用 % 進行完全主機訪問

| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |

我嘗試使用主機名連接到容器:localhost、0.0.0.0、127.0.0.1 和端口 3306 但沒有運氣

我還創建了一個單獨的用戶並賦予了全部權限,但仍然沒有運氣

下面是我的 Docker 撰寫文件

version: '3.5'

services:
  database:
    build:
      context: ./images/mysql
    restart: always
    command: ['--default-authentication-plugin=mysql_native_password']
    environment:
      - MYSQL_DATABASE=inim
      - MYSQL_USER=inimuser
      - MYSQL_PASSWORD=inimpass
      - MYSQL_ROOT_PASSWORD=docker
    ports:
      - "3306:3306"
    volumes:
      - ./database/data:/var/lib

volumes:
  my-datavolume:

我的 Dockerfile:

FROM mysql:8.0.20

CMD ["mysqld"]

EXPOSE 3306

下面是我的 Docker PS

b8832d9711b4        docker_inim_db_database   "docker-entrypoint.s…"   14 minutes ago      Up 14 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp          docker_inim_db_database_1

我與 Mysql 5.7 有類似的設置,並且連接良好。 不知道我在這里做錯了什么。

您可以通過轉到容器來調試您的進程。 請運行:

$ docker exec docker_inim_db_database_1 /bin/bash

現在您應該在容器的 bash 中。 然后使用:

$ mysql -uroot -p

並輸入您的密碼,如果沒有密碼,請按 Enter。

這個過程有兩個步驟:

a) 授予特權。 作為 root 用戶執行此替換 'password' 為您當前的 root 密碼:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

b) 綁定到所有地址:

最簡單的方法是注釋掉 my.cnf 文件中的行:

#bind-address = 127.0.0.1 

並重啟 mysql

service mysql restart

默認情況下,它只綁定到 localhost,但如果你注釋它綁定到它找到的所有接口的行。 注釋掉該行相當於 bind-address=*。

要檢查 mysql 服務綁定的位置以 root 身份執行:

netstat -tupan | grep mysql

Ubuntu 16 的更新:

配置文件是(現在)

/etc/mysql/mysql.conf.d/mysqld.cnf 

上述大部分步驟來自答案: https://stackoverflow.com/a/11225588/659077

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM