MariaDB 10.11.6权限更新问题:HeidiSQL报错且GRANT语句无效
解决MariaDB 10.11.6权限更新异常问题
关于HeidiSQL编辑mysql.user视图报错的说明
MariaDB 10.4及以上版本已将mysql.user从物理表改为系统视图,禁止直接通过视图的数据页编辑权限,这就是你遇到报错的原因。所有权限操作必须使用官方提供的SQL语句完成。
解决GRANT语句无效果的步骤
1. 确认目标用户存在
先执行以下语句检查用户是否存在:
SELECT User, Host FROM mysql.user WHERE User='user' AND Host='localhost';
如果查询无结果,需先创建用户:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'your_secure_password';
2. 确认授权的数据库存在
执行语句检查目标数据库是否存在,注意数据库名的大小写(Windows下MariaDB默认大小写不敏感,但建议与实际名称完全一致):
SHOW DATABASES LIKE 'database';
3. 确保执行授权的用户拥有足够权限
执行授权操作的用户(比如root)必须具备GRANT OPTION权限,可通过以下语句验证:
SHOW GRANTS FOR CURRENT_USER;
如果没有该权限,需要先给当前用户授予该权限(仅root用户可操作):
GRANT GRANT OPTION ON *.* TO 'current_user'@'localhost';
4. 正确执行授权并验证
重新执行授权语句(无需FLUSH PRIVILEGES,MariaDB 10.4+会自动刷新权限):
GRANT SELECT, DELETE ON `database`.* TO `user`@`localhost`;
然后执行以下语句验证权限是否生效:
SHOW GRANTS FOR 'user'@'localhost';
如果结果中包含GRANT SELECT, DELETE ON database.* TO user@localhost``,说明权限已成功授予。
5. 排查匿名用户干扰
如果用户登录后仍无权限,检查是否存在匿名用户(''@'localhost'),该用户可能优先被匹配导致权限异常:
SELECT User, Host FROM mysql.user WHERE User='';
若存在,删除匿名用户:
DROP USER ''@'localhost';
内容的提问来源于stack exchange,提问作者user2337160
相关产品推荐
相关产品推荐

