当使用 Sequel Ace 连接 Docker 中的 MySQL 容器时遇到连接失败,通常有以下几种原因和解决方案:
确保 MySQL 容器已正确映射端口:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:tag
验证端口映射:
docker ps
# 应看到类似 0.0.0.0:3306->3306/tcp 的映射
进入容器并检查用户权限:
docker exec -it some-mysql mysql -uroot -p
# 在 MySQL 中执行
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
FLUSH PRIVILEGES;
检查 MySQL 是否只绑定到 localhost:
docker exec -it some-mysql bash
cat /etc/mysql/my.cnf
确保有类似配置:
[mysqld]
bind-address = 0.0.0.0
检查主机防火墙设置:
# Linux
sudo ufw status
sudo ufw allow 3306
# macOS
sudo pfctl -sr | grep 3306
确保容器使用正确的网络模式:
docker network inspect bridge
主机地址:
127.0.0.1
或 localhost
端口:确保与 Docker 映射的端口一致(默认为 3306)
用户名/密码:使用在 MySQL 中创建的用户凭据
SSL:如果不需要加密连接,可以尝试禁用 SSL 选项
docker exec -it some-mysql mysql -uroot -p
mysql -h 127.0.0.1 -P 3306 -u username -p
docker logs some-mysql
通过以上步骤,通常可以定位并解决 Sequel Ace 连接 Docker MySQL 容器失败的问题。