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)

大家都在看

  • 记一次有意思的业务实现 → 单向关注是关注,双向关注则成好友

    开心一刻 有一个问题一直困扰着我:许仙选择了救蛇,但为什么杨果选择了救鹰(而不是救蛇)。 [En] A question has been bothering me: Xu Xia…

    数据库 2023年5月24日
    095
  • 学会Linux,看完这篇就行了!

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/797ab07d.html 你好,我是测试蔡坨坨。 对于测试同学来说,Linux基本属于必学必会内容,招…

    数据库 2023年6月11日
    069
  • Postgres14.4(Docker安装)

    Postgres14.4(Docker安装) 一,Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | …

    数据库 2023年6月11日
    099
  • ECMAScript版本知识点汇总

    ECMAScript版本知识点汇总 ES5 btoa、atob 对参数进行base64格式编码、解码 /** * btoa() * base64编码 * @param {strin…

    数据库 2023年6月11日
    093
  • 01-MySQL连接查询、聚合函数

    1、连接查询 1.1、左连接 以左表为基准进行查询,左表数据回全部显示出来 右表中如果匹配连接条件的数据则显示相应字段的数据,如果不匹配,则显示为NULL 1.2、右连接 以右表为…

    数据库 2023年6月16日
    095
  • MySQL 中的锁机制

    技术是为了解决问题而生的,锁被用来实现隔离性,保证并发事务的正确性。 两段锁 数据库遵循的是两段锁协议,将事务分成两个阶段,加锁阶段和解锁阶段(所以叫两段锁) 加锁阶段:在加锁阶段…

    数据库 2023年6月11日
    090
  • 程序设计之设计模式介绍

    一、什么是设计模式? 答:程序都是通过写代码来实现的,老前辈们在开发程序的过程中,为了解决某一类问题,日积月累总结出了一套套的代码编写经验,通过这些经验,按照套路出牌,可以让开发出…

    数据库 2023年6月14日
    079
  • JDK卸载

    win+r,进入cmd,输入java -version显示命令不存在即删除成功 Original: https://www.cnblogs.com/Icy01/p/16298149…

    数据库 2023年6月11日
    070
  • ReentrantLock 公平锁源码 第1篇

    ReentrantLock 1 这篇还是接着ReentrantLock的公平锁,没看过第0篇的可以先去看上一篇https://www.cnblogs.com/sunankang/p…

    数据库 2023年6月16日
    088
  • Maven配置私有仓库

    前言 当公司或个人具有自己独有的jar时,不想公开,一般就会放在自己的私有Maven仓库中,在项目中需要引用,此时就需要将公司私有仓库配置到maven当中,一般我们的maven配置…

    数据库 2023年6月16日
    0136
  • [springmvc]springmvc超详细总结笔记

    springMvc 1.回顾mvc 模型 模型(dao,service):业务逻辑,保存数据的状态 视图 视图(jsp,html……):展示页面 控制器 控…

    数据库 2023年6月16日
    064
  • Jenkins安装(Docker)版

    一、jenkins安装 1.查找,下载jenkins镜像文件 启动docker,查找Jenkins镜像文件 docker search jenk…

    数据库 2023年6月11日
    087
  • 多版本并发控制 MVCC

    介绍多版本并发控制 多版本并发控制技术(Multiversion Concurrency Control,MVCC) 技术是为了解决问题而生的,通过 MVCC 我们可以解决以下几个…

    数据库 2023年6月11日
    0127
  • 2022-8-29 javaweb 第一天 servlet/tomcat

    软件架构 1、C/S架构:客户端 / 服务器——–QQ,Typora,腾讯会议。 2、B/S架构:浏览器 / 服务器——…

    数据库 2023年6月14日
    074
  • MySQL实战45讲 17

    17 | 如何正确地显示随机消息? 场景:从一个单词表中随机选出三个单词。 表的建表语句和初始数据的命令如下,在这个表里面插入了 10000 行记录: CREATE TABLE w…

    数据库 2023年6月14日
    055
  • java面试题(2022最新)

    JDK 和 JRE 有什么区别?JRE:Java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。…

    数据库 2023年6月16日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球