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

通过MySQL Workbench连接VM中MySQL服务器遇权限拒绝错误求助

解决MySQL Workbench连接虚拟机MySQL报Access denied的问题

问题现象

通过MySQL Workbench连接虚拟机中的MySQL服务器,测试连接时出现错误:

Access denied for user 'user'@'localhost' (using password: YES)

已尝试操作

  • 重建用户并授予权限,执行刷新操作,命令如下:
    CREATE USER 'username'@'homeIP' IDENTIFIED WITH mysql_native_password BY 'password';
    GRANT ALL ON database_name.* TO 'username'@'%';
    
  • 在Windows系统中配置MySQL环境变量
  • my.cnf仅添加了max_allowed_packet配置
  • 添加skip-grant-tables配置后完全无法连接
  • 确认输入的密码无误
  • 执行SELECT user, host FROM mysql.users;显示预期的用户名和IP
  • 执行SHOW GRANTS FOR 'username'@'homeIP';显示已授予全部权限

解决方案

  1. 修正Workbench连接配置
    错误提示中的'user'@'localhost'说明你可能在Workbench里把主机名填成了localhost,这会连接本地Windows的MySQL而非虚拟机的。请将主机名改为虚拟机的IP地址,端口保持默认3306,用户名填你创建的username。

  2. 统一用户与权限的主机匹配
    你创建的用户是'username'@'homeIP',但授权给了'username'@'%',两者的主机范围不一致,可能导致权限不生效。二选一调整:

    • 改为创建允许任意IP连接的用户:
      CREATE USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
      GRANT ALL ON database_name.* TO 'username'@'%';
      FLUSH PRIVILEGES;
      
    • 或者确保你的Windows客户端IP就是homeIP,并给该用户授权:
      GRANT ALL ON database_name.* TO 'username'@'homeIP';
      FLUSH PRIVILEGES;
      

    注意必须执行FLUSH PRIVILEGES;让权限立即生效。

  3. 检查MySQL的绑定地址配置
    编辑虚拟机的my.cnf(或my.ini)文件,找到bind-address配置项:

    • 如果是bind-address = 127.0.0.1,说明MySQL只允许本地访问,需改为bind-address = 0.0.0.0(允许所有IP访问)或虚拟机的专属IP。
    • 修改后重启MySQL服务。
  4. 检查虚拟机防火墙与网络

    • 确保虚拟机的防火墙开放了3306端口(Linux用ufw allow 3306或firewall-cmd --permanent --add-port=3306/tcp,之后重启防火墙)。
    • 确认虚拟机的网络模式为桥接模式,保证Windows主机能ping通虚拟机IP。
  5. 移除skip-grant-tables配置
    该配置会绕过权限验证,可能导致连接异常,直接从my.cnf中删除这一行,重启MySQL服务即可恢复正常权限校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:48:18