在mysql上授权指定账号特定数据库表的查询权限,出现下面的报错。

mysql> grant select on testuser.* to user6;
ERROR 1410 (42000): You are not allowed to create a user with GRAN

实质问题原因是:授权语法不严谨导致所授权的用户及其所在主机名,要与实际存在的用户及其主机名一致。

如果已建用户是:testuser@localhost,你要授权给testuser@%,那肯定不行,必须一样才行。

所以主机名不一致的需要先修改主机名或者修改授权SQL语句。

--  查看用户信息

select User,authentication_string,Host from mysql.user;

--  更新指定用户主机

update mysql.user set host='%' where user='TESTUSER'; 

正常授权流程如下:

-- 切换数据库

use mysql;

-- 创建一个普通用户

create user 'TESTUSER'@'%' identified by 'PASSWORD';

-- 授权指定数据库和表的select权限

grant select on app.user to 'TESTUSER'@'%';
grant select on app.mail to 'TESTUSER'@'%';

-- 刷新权限

flush privileges;

其他操作

-- 查看用户拥有的权限的情况
SHOW GRANTS FOR 'TESTUSER'@'%';

-- 撤销指定表所有权限
revoke all on app.user from 'TESTUSER'@'%';

拓展参考的文章 msyql 赋予权限和撤销权限_redhatlxs的博客-CSDN博客

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐