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)

大家都在看

  • Navicat for MySQL的服务器连接管理

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年8月23日
    0180
  • 界面酷炫,功能强大!这款 Linux 性能实时监控工具超好用!

    对于维护、管理Linux系统来说,它的性能监控非常重要,特别是实时监控数据,这个数据有利于我们判断服务器的负载压力,及时调整资源调配,也有助于更好的服务于业务。所以,今天民工哥给大…

    数据库 2023年6月9日
    036
  • 你的 SQL 还在回表查询吗?快给它安排覆盖索引

    什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键、聚集索引、辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引…

    数据库 2023年5月24日
    045
  • 如何使用Java代码修改数组大小呢?

    数组是Java开发中非常重要的一个数据存储容器, 那可以存储多种类型,基础类型,引用类型,但是它有一个缺点,就是一旦创建后,就不可以修改数组的大小, 那么我们如何动态的扩容数组的大…

    数据库 2023年6月11日
    047
  • 应用开发实践之关系型数据库(以MySql为例)小结

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年8月23日
    0220
  • [Mysql]root密码忘了怎样重新设置密码

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年11月12日
    0135
  • MySQL常见问题

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年9月4日
    0189
  • Harbor部署

    harbor 无论是使用Docker-distribution去自建仓库,还是通过官方镜像跑容器的方式去自建仓库,通过前面的演示我们可以发现其是非常的简陋的,还不如直接使用官方的D…

    数据库 2023年6月14日
    049
  • springboot~用正则表达式提取bearer token

    前后一体的应用,是这样进行认证的 用户向服务端发送验证信息(用户名、密码); 服务端验证成功就向用户返回一个sessionid; 服务端保存了这个session_id对应的信息,并…

    数据库 2023年6月6日
    042
  • Postman安装及汉化

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年11月8日
    0222
  • MySQL 主从同步延迟监控

    MySQL5.7和8.0支持通过 replication_applier_status 表获同步延迟时间,当从库出现延迟后,该表中的字段 REMAINING_DELAY 记录延迟秒…

    数据库 2023年6月11日
    047
  • 滑动窗口常用技巧总结

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年10月31日
    0289
  • 解决mac下mysql libssl.1.0.0.dylib报错问题

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年8月11日
    0284
  • 我的第一次校招

    2018-09-26 23:40:03 虽然是第一次参加,但这次的笔试完成结果让我不是很满意,因为有几道超简单的字符串编程没有做,忘了或者是想复杂了,还有一些概念题不是很清楚,自己…

    数据库 2023年6月16日
    063
  • java中如何将函数作为参数传递呢?

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    数据库 2022年10月31日
    0225
  • MySQL第1章——数据库概述

    数据库概述 为什么要使用数据库 什么是数据持久化? 数据持久化是将数据保存到可切换的存储设备中以备后用。在大多数情况下,尤其是在企业应用中,数据持久化指的是将内存中的数据保存到硬盘…

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