ERROR 1044 是因用户缺少 Grant_priv 权限导致的访问拒绝,需用高权限账号(如 root@localhost)更新 mysql.user 表中对应用户的 Grant_priv 和 Super_priv 为 'Y' 并执行 FLUSH PRIVILEGES 后方可授权。
ERROR 1044 是权限不足,不是密码或
网络问题
报
,说明你当前登录的用户(比如
)根本没有操作
系统库的权限——连
都被拦住,更别说
或改用户表了。这不是密码错、没启动、连不上端口的问题,而是 MySQL 权限模型里最底层的“能不能进大门”的限制。
查清楚谁在用、缺什么权限
先用有权限的账号(比如
或
)登录,执行:
重点看
列:如果对应远程 host(如
或具体 IP)那一行是
,就确认了问题根源——这个账号被创建时没给
,后续所有授权命令都会失败。
→ 不能执行任何
/
→ 无法绕过权限检查(比如设
后仍可能受限)
哪怕
,
也照样报 1044
修复 Grant_priv 权限(必须用高权限账号操作)
用本地可登录的 root(如
)执行:
⚠️ 注意:
值必须严格匹配你查出来的值(比如是
就不能写成
),否则更新无效;
不可省,否则内存缓存不刷新。
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
之后再试远程授权命令:
为什么直接
会失败?
因为
本身就需要当前用户拥有
。就像你没钥匙,却想把锁匠工具借给别人去开别人的门——MySQL 直接拒绝这种“越权授权”。很多教程跳过权限校验步骤,直接让新手跑
,结果全卡在 1044 上。
真正要远程管理,别只依赖一个
:优先建专用管理账号(如
),并确保它从创建起就带
;而
这种通配账号,生产环境最好禁用或限制 IP 段,避免权限过大反而失控。
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'mysql'root@'%'mysqlUSE mysqlGRANTroot@localhostroot@127.0.0.1SELECT host, user, Grant_priv, Super_priv FROM mysql.user WHERE user = 'root';Grant_priv'%''N'GRANT OPTIONGrant_priv = 'N'GRANTREVOKESuper_priv = 'N'skip-grant-tablesSuper_priv = 'Y'Grant_priv = 'N'root@localhostUPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root' AND Host = '%';
FLUSH PRIVILEGES;Host'%''localhost'FLUSH PRIVILEGESGRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'your_password' WITH GRANT OPTION;GRANT ... WITH GRANT OPTIONWITH GRANT OPTIONGrant_privGRANTroot@'%'admin@'192.168.1.%'WITH GRANT OPTIONroot@'%'