当前位置: 首页 > 工具软件 > grant > 使用案例 >

MySQL grant 语法

吉和同
2023-12-01

参考:grant 权限 on 数据库对象 to 用户 - 这才是真的阿呆云飞 - 博客园

基本语法:

grant 权限 on 数据库对象 to 用户 identified by 密码

用户一般格式是:用户名@IP 

说明:IP有时候会写%。%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限

当不加@选项时,效果与加@'%'是一样的,'%'从名义上包括任何主机,(%必须加上引号,不然与@放在一起可能不会被辨认出。)不过有些时候(有些版本)'%'不包括localhost,要单独对@'localhost'进行赋值

一、基本权限设置

--  赋予用户common_user在所有IP上拥有testdb数据库中所有表的增/删/查/改的权限

grant select(insert 或update或delete ) on testdb.*   to common_user@’%’;

-- 一次性赋予增删查改的所有权限

grant select, insert, update, delete on testdb.* to common_user@’%’;


-- grant 创建、修改、删除、操作索引 MySQL 数据表结构权限。

grant create/alter/drop/index  on testdb.* to user@’192.168.0.%’;

-- grant 操作 MySQL 外键权限。

grant references on testdb.* to user@’192.168.0.%’;

-- grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to user@’192.168.0.%’;


-- grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to user@’192.168.0.%’;

grant show view on testdb.* to user@’192.168.0.%’;

二、高级权限、细分权限

1、所有数据库所有表:*.* 

-- 授权用户 dba 所有数据库所有表的所有权限
grant all (privileges)  on *.* to dba@’localhost’;

2、一个数据库所有表:数据库名(.*)
-- 授权用户 dba 针对 testdb 数据库所有表的所有权限
grant all (privileges) on testdb to dba@’localhost’;

3、一个数据库一个数据表:库.表  
grant select, insert, update, delete on testdb.orders to dba@localhost;

-- 给一个用户授权多张表时,可以多次执行以上语句。例如:

grant select on smp.users  to mo_user@’%’ identified by ‘123345′;

grant select on smp.mo_sms to mo_user@’%’ identified by ‘123345′;

4、 grant 作用在表中的列上:
grant select(id, se, rank) on testdb.apache_log to dba@localhost;

 三、查询权限

-- 查看当前用户(自己)权限:
show grants;

-- 查看其他 MySQL 用户权限:
show grants for zhangkh@'192.168.1.10';

四、回收权限 

-- 把grant 换成revoke  to 换成 from
-- grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;

五、授予权限

-- 想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;

-- 使myuser使用mypassword从任何主机连接到mysql服务器
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
FLUSH   PRIVILEGES; 

-- 允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY  'mypassword' WITH GRANT OPTION;  
FLUSH   PRIVILEGES; 


-- 允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  

FLUSH   PRIVILEGES; 

 

 类似资料: