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

Mac OS X下新建MySQL Docker容器后访问被拒绝问题求助

解决MySQL容器登录权限问题

1. 修正登录命令的密码格式

你当前使用的-p=root写法有误,MySQL的-p参数后直接跟密码时不需要等号,正确写法如下:

# 方式1:直接在命令行指定密码(会有安全提示)
docker exec -it my_db mysql -uroot -proot

# 方式2:交互式输入密码(更安全)
docker exec -it my_db mysql -uroot -p
# 执行后输入密码root即可

2. 处理MySQL8 root用户的认证插件限制

MySQL8默认对root@localhost采用auth_socket认证插件,而非密码认证,这会导致即使密码正确也无法登录。可以通过以下步骤修改:

  • 停止并删除当前容器:
    docker stop my_db
    docker rm my_db
    
  • 启动临时容器并跳过权限验证:
    docker run -d --name my_db_temp -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydatabase -e MYSQL_USER=myuser -e MYSQL_PASSWORD=secret mysql:8 --skip-grant-tables --skip-networking
    
  • 进入临时容器的MySQL命令行:
    docker exec -it my_db_temp mysql
    
  • 修改root用户的认证插件和密码:
    USE mysql;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
    FLUSH PRIVILEGES;
    exit;
    
  • 替换回正常容器:
    docker stop my_db_temp
    docker rm my_db_temp
    docker run -d --name my_db -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydatabase -e MYSQL_USER=myuser -e MYSQL_PASSWORD=secret mysql:8
    
  • 再次尝试登录即可成功。

3. 使用创建的myuser用户登录

如果root用户登录仍有问题,可尝试使用你创建的myuser用户,登录时需指定对应数据库:

docker exec -it my_db mysql -umyuser -psecret mydatabase

4. 检查容器初始化状态

若以上方法均无效,可查看容器日志确认初始化是否正常:

docker logs my_db

日志中若出现密码设置失败、数据库创建异常等信息,需重新创建容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:07:15