用户与权限管理
1.用户管理
1.创建用户
CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];
2.修改用户
//修改用户名
UPDATE mysql.user SET USER='li4' WHERE USER='wang5';
//修改完之后记得刷新权限
FLUSH PRIVILEGES;
3.删除用户
//1.DROP【推荐】
DROP USER user[,user]…;
eg:
DROP USER 'kangshifu'@'localhost';
//2.DELETE,执行完之后需要刷新权限【不推荐】
DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;
FLUSH PRIVILEGES;
4.密码修改
//1.修改自己的密码
ALTER USER USER() identified by 'abc123';
//或者使用SET
SET password = 'abc123';
//2.修改其他用户的密码
ALTER USER 'lff'@'%' identified by 'abc123';
//或者使用SET
SET password for 'lff'@'%' = 'abc123';
2.权限管理
1.查看权限
查看mysql有哪些权限
show privileges;
常用权限
查看自己有哪些权限
show grants [for current_user()];
2.授予权限
GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
eg:
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost ;
授予所有权限
GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';
3.回收权限
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
eg:
#收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM 'lff'@'%';
4.权限表
权限表存放在mysql
数据库中,具体在以下表中存放
- user表: 记录用户账号和全局权限信息
- db表:数据库的操作权限
- tables_priv表:表的操作权限
- columns_priv表:表中的列的操作权限
- procs_priv表:存储过程和存储函数设置操作权限
3.角色管理
1.创建角色
CREATE ROLE 'role_name'[@'host_name']...[,'role_name'[@'host_name']];
2.给角色赋予权限
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
3.查看角色的权限
SHOW GRANTS FOR 'manager';
4.回收角色的权限
REVOKE privileges ON tablename FROM 'rolename';
5.删除角色
DROP ROLE role [,role2]...
注意, 如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限。
6.给用户赋予角色
GRANT role [,role2,...] TO user [,user2,...];
7.激活角色
SET DEFAULT [ROLE] ALL TO 'kangshifu'@'localhost';
查询当前会话以及激活的角色
select current_role();
8.撤销用户的角色
REVOKE role FROM user;