mysql怎么管理权限 mysql如何设置权限( 四 )


#不能使用最近365天内的密码:
CREATE USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'kangshifu'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
#既不能使用最近5个密码,也不能使用365天内的密码
CREATE USER 'kangshifu'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'kangshifu'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;
二、权限管理
1、 权限列表
MySQL到底都有哪些权限呢?
mysql 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服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务 器可以访问这些文件) 。
2、 授予权限的原则
权限控制主要是出于安全因素,因此需要遵循以下几个 经验原则 :
1、只授予能 满足需要的最小权限,防止用户干坏事 。比如用户只是需要查询,那就只给select权限就可 以了,不要给用户赋予update、insert或者delete权限 。
2、创建用户的时候 限制用户的登录主机,一般是限制成指定IP或者内网IP段 。
3、为每个用户 设置满足密码复杂度的密码。
4、 定期清理不需要的用户,回收权限或者删除用户 。
3、 授予权限
给用户授权的方式有 2 种,分别是通过把 角色赋予用户给用户授权 和 直接给用户授权。用户是数据库的 使用者 , 我们可以通过给用户授予访问数据库中资源的权限 , 来控制使用者对数据库的访问,消除安全 隐患 。授权命令:
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';
我们在开发应用的时候,经常会遇到一种需求,就是要根据用户的不同,对数据进行横向和纵向的 分组 。所谓横向的分组,就是指用户可以接触到的数据的范围,比如可以看到哪些表的数据;
所谓纵向的分组,就是指用户对接触到的数据能访问到什么程度,比如能看、能改,甚至是 删除 。
4、 查看权限
查看当前用户权限
SHOW GRANTS;
# 或
SHOW GRANTS FOR CURRENT_USER;
# 或
SHOW GRANTS FOR CURRENT_USER();
查看某用户的全局权限
SHOW GRANTS FOR 'user'@'主机地址' ;

推荐阅读