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

权限管理

  • 查看权限类型
show privileges;
1CREATEDROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将
MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
2SELECTINSERTUPDATEDELETE权限 允许在一个数据库现有的表上实施操作。
3SELECT权限只有在它们真正从一个表中检索行时才被用到。
4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。
5ALTER权限 可以使用ALTER TABLE来更改表的结构和重新命名表。
6CREATE ROUTINE权限 用来创建保存的程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序,
EXECUTE权限 用来执行保存的程序。
7GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。
8) FILE权限 使用户可以使用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权限的用户
都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)
  • 授权原则
1、只授予能 满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查询,那就只给select权限
就可以了,不要给用户赋予updateinsert或者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 @   DogLeftover  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
历史上的今天:
2021-06-07 ES6简单入门
点击右上角即可分享
微信分享提示