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 `用户`@`%`

MySql用户与权限控制的更多相关文章

  1. mysql 用户管理 权限控制

    添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...

  2. MySQL 初学笔记 ① -- MySQL用户登录权限控制

    1. MySQL 登录 MySQL -u username -p 2. MySQL 创建用户 use mysql //进入mysql 表 INSERT INTO user (Host,User,Pas ...

  3. mysql 用户及权限管理 小结

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...

  4. MySQL Study之--MySQL用户及权限管理

    MySQL Study之--MySQL用户及权限管理     MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...

  5. 如何给mysql用户分配权限+增、删、改、查mysql用户

    在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...

  6. Mysql 用户,权限管理的几点理解。

    前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...

  7. 入门MySQL——用户与权限

    前言:  前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多. 1.创建用户 官方推荐创建语法为 ...

  8. Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制

    kafka系列文章 第一章 linux单机安装kafka 第二章 kafka--集群安裝部署(自带zookeeper) 第三章 Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制 Ka ...

  9. MariaDB/MySQL用户和权限管理

    本文目录: 1.权限验证 1.1 权限表 1.2 图解认证和权限分配的两个阶段 1.3 权限生效时机 2.用户管理 2.1 创建用户 2.2 create user和alter user 2.3 记录 ...

  10. Mysql 用户和权限管理

    用户和权限管理: 语法 grant 权限 on 数据库.数据表 to '用户' @ '主机名'; 例:给 xiaogang 分配所有的权限 grant all on *.* to 'xiaogang' ...

随机推荐

  1. OpenTK 垂直同步对刷新率的影响

    本文将和大家介绍 Vsync 垂直同步的开启对 OpenTK 应用的刷新率的影响 在上一篇博客 OpenTK 入门 初始化窗口 告诉了大家如何初始化 OpenTK 承载 OpenGL 的窗口的应用,在 ...

  2. dotnet 警惕 async void 线程顶层异常

    在应用程序设计里面,不单是 dotnet 应用程序,绝大部分都会遵循让应用在出现未处理异常状态时终结的原则.在 dotnet 应用里面,如果一个线程顶层出现未捕获异常,则应用进程将会被认为出现异常状态 ...

  3. vue3 快速入门系列 —— 状态管理 pinia

    其他章节请看: vue3 快速入门 系列 pinia vue3 状态管理这里选择 pinia. 虽然 vuex4 已支持 Vue 3 的 Composition API,但是 vue3 官网推荐新的应 ...

  4. Mybatis学习四(分页助手pagehelper)

    Mybatis学习过程中有一个很重要的插件分页助手(pagehelper) 能够运用这个插件也非常简单 1.导入jar包 [jsqlparser-2.0.jar包] [点击下载https://gith ...

  5. Docker推送镜像到Dockerhub

    登录docker hub官网注册账号 https://hub.docker.com/signup 登录账户,创建一个仓库 "Create Repository"--> 输入命 ...

  6. blocks (单调栈)

    题目描述 解析 对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平 均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于 ...

  7. Splashtop 免费60天 大赠送

    这两天又是双11,又是 EDG 夺冠,可谓喜事连连.热闹不断.我们也给大家准备了一份长达两个月的免费福利,快乐加倍嗷. 福利详情: 1.分享这篇文章(不要设置分组可见). 2.发送您的 Splasht ...

  8. Vue3学习(二十四)- 文档页面功能开发

    写在前面 这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现. 说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考, ...

  9. C语言:输入一个整数并让其逆反输出。123->321

    主要思想为: a)计算输入的位数有多少个 b)计算出最高位的单位(若最高位为是万位, 那么需要一个变量存储最高位数值1000) c)用取模的方法从个位数开始进行取出每一个单位上的数字 d)从个位数开始 ...

  10. fuser命令详解

    fuser -mv 作用 fuser命令是用来显示所有正在使用着指定的file.file system或者sockets的进程信息.具体来说,fuser -mv的作用如下: 参数-m:指定一个被加载的 ...