You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署MySQL:终端外连接提示‘Access denied for user 'root'@'localhost’求助

解决Docker MySQL外部客户端连接拒绝问题

1. 修正MySQL用户主机权限

Docker容器内的root@localhost仅允许容器内部访问,外部客户端连接时实际是以root@你的主机IP/127.0.0.1身份请求,因此需要调整用户权限:

  • 进入运行中的MySQL容器:
    docker exec -it <你的容器ID/名称> bash
    
  • 登录MySQL(使用你能正常访问的凭据):
    mysql -u root -p
    
  • 修改root用户允许任意主机访问,或指定你的主机IP:
    ALTER USER 'root'@'%' IDENTIFIED BY '你的密码';
    -- 若需限制仅本地访问,可指定127.0.0.1
    -- ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '你的密码';
    FLUSH PRIVILEGES;
    

2. 确认Docker端口映射配置

确保启动容器时的端口映射是主机端口:容器3306(MySQL容器内部默认端口为3306,而非你修改的主机端口),示例启动命令:

docker run -d -p 3700:3306 --name mysql-container mysql:latest

检查当前容器的端口映射状态:

docker ps

查看PORTS列是否显示0.0.0.0:3700->3306/tcp或127.0.0.1:3700->3306/tcp。

3. 替换localhost为127.0.0.1连接

MacOS Ventura中localhost可能优先解析为IPv6地址,部分客户端对IPv6支持不佳,在DBeaver/MySQL Workbench或Python代码中,将连接地址从localhost改为127.0.0.1,端口使用3700。

4. 检查MacOS防火墙设置

打开「系统设置」-「网络」-「防火墙」,确认是否允许DBeaver、MySQL Workbench或Python进程访问网络,或临时关闭防火墙测试是否解决问题。

内容的提问来源于stack exchange,提问作者lengthy_preamble

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:15:26