如何为用户授予VIEW权限?遇tables.priv表损坏问题求助
解决视图授权问题及系统表修复方法
你写的视图授权语法本身是正确的,MySQL中给用户授予视图SELECT权限的标准写法就是:
GRANT SELECT ON `database`.`view` TO 'login'@'%';
报错提示的tables.priv是MySQL的核心系统表(隶属于mysql库),这个表损坏会导致所有权限相关操作无法正常执行,必须先修复该表才能继续授权,修复步骤如下:
- 停止MySQL服务:
- Linux系统:
systemctl stop mysql - Windows系统:通过服务管理器停止或执行
net stop mysql
- Linux系统:
- 启动MySQL并跳过权限表校验:
- Linux系统:执行
mysqld_safe --skip-grant-tables & - Windows系统:在MySQL配置文件(my.ini/my.cnf)中添加
skip-grant-tables配置项,然后重新启动服务
- Linux系统:执行
- 无密码登录MySQL:
mysql -u root - 执行修复命令:
REPAIR TABLE mysql.tables_priv; - 退出MySQL,恢复配置(Windows需移除
skip-grant-tables),再正常重启MySQL服务,之后重新执行你的授权语句即可正常生效。
内容的提问来源于stack exchange,提问作者miraloe
相关产品推荐
相关产品推荐

