mysql grant授权
mysql grant授权
基本语法
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.%’;
高级权限、细分权限
//所有数据库所有表:*.*
-- 授权用户 dba 所有数据库所有表的所有权限
grant all (privileges) on *.* to dba@’localhost’;
//一个数据库所有表:数据库名(.*)
-- 授权用户 dba 针对 testdb 数据库所有表的所有权限
grant all (privileges) on testdb to dba@’localhost’;
//一个数据库一个数据表:库.表
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′;
// grant 作用在表中的列上:
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
//grant 给普通用户授权mysqldump的权限
GRANT SELECT, LOCK TABLES ON `aio_%`.* TO 'aio_user'@'%';
flush privileges;
查询权限
-- 查看当前用户(自己)权限:
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;
-- 模糊匹配授权
grant select,update,insert,create,alter,delete,drop,index,references,lock tables on `soi_%`.* to 'soi_user'@'%';