用户管理和权限管理

1. 用户管理

#1.查看数据库中的所有用户
SELECT DISTINCT CONCAT('User:''', user, '''@''', host, ''';') AS result FROM mysql.user;

#2.查看某个用户的权限
show grants for 'root'@'%';
select * from mysql.user where user='root' \G;

#3.创建用户:
create user 用户名 identified by '该用户密码';

#4.查看当前用户
select user();

#5.修改用户密码
use mysql;
UPDATE user SET password=PASSWORD('新密码') WHERE user='用户';
flush privileges; -- 所有通过user表的修改,必须用该命令才能生效

#6.修改用户权限及密码
grant 权限 on 授权对象(库名.表名) to '用户名'@'网段' identified by '该用户的密码';
grant all privileges on myemployees.* to 'zhangsan'@'%' identified by '111111';

#7.删除用户
drop user 'zhangsan'@'%'; -- 不要通过delete from  user u where user='zhangsan'进行删除,系统会有残留信息保留

2. 权限管理

语法:

#1.授予权限
grant 权限 on 授权对象(库名.表名) to '用户名'@'网段' identified by '该用户的密码' 【with grant option】;

#2.收回权限
revoke 权限 on 授权对象(库名.表名) from '用户名'@'网段' identified by '该用户的密码';

注意:

  • with grant option:表示让该授权的用户,也可以将它的权限赋予给其他用户。

  • 授权对象的被授权的范围的写法:

    *.*:意为所有的数据库及表。

    数据库名.*:意为该数据库下的所有表。

    数据库名.数据表名:意为该数据库下的该数据表。

  • 被授权的用户的写法,%代替一整个网段:

    ‘用户名’@’%’:意为所有网段都可以用该用户登陆数据库。

    ‘用户名’@‘192.168.123.234’:意为只有此IP可使用该用户登陆数据库。

    ‘用户名’@‘192.168.122.%’:意为192.168.122该网段的所有主机都可使用该用户登陆数据库。

权限说明:

  • all privileges:除with grant option(让授权的用户,也可以将这些权限grant给其他用户,权限复制)之外的所有权限。

  • alter:对数据表的修改的权限。

  • alter routine:更改或者删除存储函数或者存储过程的权限。

  • create:创建数据库及表的权限。

  • create routine:更改和弃用存储过程的能力。

  • create temporary tables:创建临时表的权限。

  • create user:创建、重命名和撤销用户的权限。

  • create view:创建视图的权限。

  • delete:数据表中删除数据的权限。

  • drop:允许删除数据库、表、视图的权限。

  • execute:执行存储过程或者调用函数的权限。

  • event:允许查询,创建,修改,删除MySQL事件的权限。

  • file:对系统中的文件(本地文件)读取和写操作的权限。

  • grant option:用户委派权限的权限。

  • index:创建、删除索引的权限。

  • insert:向表中插入数据的权限。

  • lock tables:允许对拥有select权限的表进行锁表的权限。

  • process:查看所有用户线程/连接的权限。

  • references:5.7.6版本后,允许是否创建外键的权限。

  • reload:允许执行flush,重新加载权限表的权限。

  • replication client:允许用户查询从服务器和主服务器位置的权限。

  • replication slave:允许slave主机通过此用户连接master建立主从的权限。

  • select:允许从表中查看数据的权限。

  • show databases:查看所有数据库名的权限。

  • show view:查看视图详细信息的权限。

  • shutdown:允许关闭数据库实例的权限。

  • super:允许执行一系列数据库管理命令的权限(change、master、kill thread、mysqladmindebug、purge master logs、set global…)。

  • trigger:MySQL5.1.6后,允许创建,删除,执行,显示触发器的权限。

  • update:允许修改表中的数据的权限。

  • usage:创建一个用户之后的默认权限,只代表连接,无其他任何权限。

案例:

#创建用户并授予只读权限
grant select on 数据库名.* to 用户@'网段或ip' identified by '密码';

#创建用户并授予插入数据权限
grant insert on 数据库名.* to 用户@'网段或ip' identified by '密码';

#创建用户并授予改变原有数据的权限
grant update on 数据库名.* to 用户@'网段或ip' identified by '密码';

#创建用户并授予删除数据的权限
grant delete on 数据库名.* to 用户@'网段或ip' identified by '密码';

#要拥有以上所有权限,可写为一条,权限间用逗号隔开
grant select, insert, update, delete on 数据库名.* to 用户@'网段或ip' identified by '密码';

#创建用户并授予所有权限
grant all privileges on 数据库名.数据表明 to 用户@'网段或ip' identified by '密码';

#创建用户并授予其对数据表的创建的权限
grant create on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对数据表的修改权限
grant alter on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对数据库/表/视图的删除的权限
grant drop on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对数据库下表的设置外键的权限
grant references on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对数据库的设置临时表权限
grant create temporary tables on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对某数据库范围的表设置索引的权限
grant index on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对某数据库范围内创建视图的权限
grant create view on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对某数据库范围内查看视图的权限
grant show view on 数据库名.* to 用户@'网段或IP' identified by '密码';

#创建用户并授予其对某数据库范围内存储过程、函数的权限
grant create routine on 数据库名.* to 用户@'网段或IP';
grant alter routine on 数据库名.* to 用户@'网段或IP'; 
grant execute on 数据库名.* to 用户@'网段或IP';

#创建用户并授予其对数据表中列的权限
grant select(列的名字) on 数据库.数据表 to 用户@'网段或IP' identified by '密码'; -- 如有很多列,要用逗号隔开

#创建用户并授予对数据表中的存储过程和函数的权限
grant execute on procedure 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';
grant execute on function 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值