展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

权限管理

  • 查看权限类型
show privileges;

(1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将
MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。 
(2)SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。 
(3) SELECT权限只有在它们真正从一个表中检索行时才被用到。 
(4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。 
(5) ALTER权限 可以使用ALTER TABLE来更改表的结构和重新命名表。
(6) CREATE ROUTINE权限 用来创建保存的程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序, 
EXECUTE权限 用来执行保存的程序。 
(7) GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。 
(8) FILE权限 使用户可以使用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权限的用户
都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)
  • 授权原则
1、只授予能 满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查询,那就只给select权限
就可以了,不要给用户赋予update、insert或者delete权限。
2、创建用户的时候 限制用户的登录主机 ,一般是限制成指定IP或者内网IP段。
3、为每个用户 设置满足密码复杂度的密码 。
4、 定期清理不需要的用户 ,回收权限或者删除用户。
  • 给用户授权
# 该权限如果发现没有该用户,则会直接新建一个用户
GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
  • 代码案例
# 给li4用户用本地命令行方式,授予atguigudb这个库下的所有表的插删改查的权限
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost ;

# 授予通过网络方式登录的joe用户,对所有库所有表的全部权限,密码设为123。注意这里唯独不包括grant的权限
GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';
  • 查看当前用户权限
SHOW GRANTS;
# 或
SHOW GRANTS FOR CURRENT_USER;
# 或
SHOW GRANTS FOR CURRENT_USER();
  • 查看指定用户权限
SHOW GRANTS FOR 'user'@'主机地址';
  • 在将用户账户从user表删除之前,应该收回相应用户的所有权限

  • 收回权限,用户需重新登录后生效

REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
  • 代码案例
#收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%';

#收回mysql库下的所有表的插删改查权限
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;
posted @ 2022-06-07 14:24  DogLeftover  阅读(18)  评论(0编辑  收藏  举报