![](/img/trans.png)
[英]Unable to Connect to Localhost (MySQL Workbench on MariaDB Docker)
[英]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.