MySql用户与权限控制

MySql用户与权限控制

— 刷新权限命令
#   -- 刷新mysql权限命令
flush privileges;

用户管理

1、查看用户
#查看用户
USE mysql;
SELECT host,user FROM user;
2、创建用户.

@‘%’ 为host连接,建议进行各种指令操作时带此参数

#创建用户
CREATE USER 'name' identified by 'password';  #创建用户   默认host是%
CREATE USER name@localhost identified by '000000'   #创建本地host连接
3、修改用户
3.1、修改用户
UPDATE user SET user ='test2' WHERE user ='test1' AND host = '%'

4、删除用户
4、删除用户
DROP user 'test2';  #建议使用
DELETE FROM user WHERE user = 'test2' AND host = '%'; #此方式可能会有残留权限数据 删除不干净
5、修改密码
#   3.2 修改当前链接用户的密码
alter  user user() identified by 'new_password'; #写法一
SET PASSWORD= 'new_password';#写法二

#   3.3 修改其他用户的密码  root登陆后
alter user 'test1'@'%' identified by 'new_password'; #写法一
SET PASSWORD FOR 'test1'@'%' = '000000'; #写法二
6、密码过期策略
#设置 test1 用户的密码立刻过期
alter user 'test1'@'%' password expire

#设置密码90天过期
create user "new_user"@"localhost" PASSWORD EXPIRE INTERVAL 90 DAY;  #新建用户
alter user "new_user"@"localhost" PASSWORD EXPIRE INTERVAL 90 DAY;  #修改用户

#设置密码永不过期
create user "new_user"@"%" PASSWORD EXPIRE NEVER;  #新建用户
alter user "new_user"@"%" PASSWORD EXPIRE NEVER;  #修改用户

权限管理

1、查看权限

#查看root
SHOW GRANTS
或者
SHOW GRANTS FOR CURRENT_USER;

## 查看某个用户的全局权限

SHOW GRANTS FOR 'user'@'%'

2、赋予权限

 *.*(库名.表名)

赋予用户 所有权限
grant ALL PRIVILEGES ON *.* TO 'new_user'@'%';

赋予用户 对 test库的查询和修改权限
grant select,update  on test.* to 'new_user'@'%';
叠加赋予用户
grant delete  on test.* to 'new_user'@'%';

3、回收权限

#回收某个权限
REVOKE UPDATE,DELETE,INSERT ON *.* FROM username@%;   # *.*(库名.表名)

#回收所有的权限
REVOKE ALl PRIVILEGES ON *.* FROM username@%;

权限表

当mysql建立连接后将数据库用户权限信息写到内存中进行校验

在库名为mysql中以下表:

  • user表 用户信息
  • db表 操作库权限
  • tables_priv 操作表权限
  • columns_priv 操作列权限
  • procs_priv 操作函数权限

当用户发出操作请求时

  1. Mysql检查user表中的权限信息 匹配user、host字段值,查看全局权限是否允许,如果找到匹配信息。则执行操作,否则继续向下查找权限
  2. 检查db表中的权限信息 匹配user、host值,查看请求的数据库级别的权限是否允许,如果找到匹配结果,则执行操作,否则继续向下查找权限
  3. 检查tables_priv表中的权限信息,匹配user、host值,查看请求的数据表级别是否允许,如果找到匹配结果,则执行操作,否则继续向下查找权限
  4. 检查columns_priv列中的权限信息,匹配user、host值,查看请求的数据列级别是否允许,如果找到匹配结果,则执行操作,否则mysql返回错误信息

角色管理

1、创建角色

CREATE ROLE 'name'@'%';  #一创建用户1
CREATE ROLE 'name1', 'name2' ... ;#二 创建用户

2、给角色赋予权限

#赋予全部权限
GRANT ALL PRIVILEGES ON 库名.表明 TO '角色名';

#赋予查询删除权限
GRANT SELECT,DELETE ON 库名.表明 TO '角色名';

3、查看角色权限

SHOW GRANTS;   #root的权限
SHOW GRANTS FOR "角色名";   #角色名权限

4、回收角色权限

REVOKE UPDATE ON 库名.表名 FROM "角色名";

#回收所有
REVOKE ALl PRIVILEGES ON *.* FROM "角色名";

5、删除角色

DROP ROLE 角色名

6、激活角色

    mysql 创建了角色默认都是未激活状态

#查看当前用户激活状态的角色
SELECT CURRENT_ROLE();

#激活角色       #需要重新登陆后才能查看
set default role 角色名@% TO 用户名@%;

7、给用户赋予角色

GRANT  角色名@% TO 用户名@%;

8、回收用户的角色

REVOKE 角色 FROM 用户@%

Original: https://www.cnblogs.com/Kuju/p/16173938.html
Author: 酷酷的sinan
Title: MySql用户与权限控制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599260/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球