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 操作函数权限
当用户发出操作请求时
- Mysql检查user表中的权限信息 匹配user、host字段值,查看全局权限是否允许,如果找到匹配信息。则执行操作,否则继续向下查找权限
- 检查db表中的权限信息 匹配user、host值,查看请求的数据库级别的权限是否允许,如果找到匹配结果,则执行操作,否则继续向下查找权限
- 检查tables_priv表中的权限信息,匹配user、host值,查看请求的数据表级别是否允许,如果找到匹配结果,则执行操作,否则继续向下查找权限
- 检查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用户与权限控制的更多相关文章
- mysql 用户管理 权限控制
添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...
- MySQL 初学笔记 ① -- MySQL用户登录权限控制
1. MySQL 登录 MySQL -u username -p 2. MySQL 创建用户 use mysql //进入mysql 表 INSERT INTO user (Host,User,Pas ...
- mysql 用户及权限管理 小结
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...
- MySQL Study之--MySQL用户及权限管理
MySQL Study之--MySQL用户及权限管理 MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...
- 如何给mysql用户分配权限+增、删、改、查mysql用户
在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...
- Mysql 用户,权限管理的几点理解。
前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...
- 入门MySQL——用户与权限
前言: 前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多. 1.创建用户 官方推荐创建语法为 ...
- Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制
kafka系列文章 第一章 linux单机安装kafka 第二章 kafka--集群安裝部署(自带zookeeper) 第三章 Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制 Ka ...
- MariaDB/MySQL用户和权限管理
本文目录: 1.权限验证 1.1 权限表 1.2 图解认证和权限分配的两个阶段 1.3 权限生效时机 2.用户管理 2.1 创建用户 2.2 create user和alter user 2.3 记录 ...
- Mysql 用户和权限管理
用户和权限管理: 语法 grant 权限 on 数据库.数据表 to '用户' @ '主机名'; 例:给 xiaogang 分配所有的权限 grant all on *.* to 'xiaogang' ...
随机推荐
- OpenTK 垂直同步对刷新率的影响
本文将和大家介绍 Vsync 垂直同步的开启对 OpenTK 应用的刷新率的影响 在上一篇博客 OpenTK 入门 初始化窗口 告诉了大家如何初始化 OpenTK 承载 OpenGL 的窗口的应用,在 ...
- dotnet 警惕 async void 线程顶层异常
在应用程序设计里面,不单是 dotnet 应用程序,绝大部分都会遵循让应用在出现未处理异常状态时终结的原则.在 dotnet 应用里面,如果一个线程顶层出现未捕获异常,则应用进程将会被认为出现异常状态 ...
- vue3 快速入门系列 —— 状态管理 pinia
其他章节请看: vue3 快速入门 系列 pinia vue3 状态管理这里选择 pinia. 虽然 vuex4 已支持 Vue 3 的 Composition API,但是 vue3 官网推荐新的应 ...
- Mybatis学习四(分页助手pagehelper)
Mybatis学习过程中有一个很重要的插件分页助手(pagehelper) 能够运用这个插件也非常简单 1.导入jar包 [jsqlparser-2.0.jar包] [点击下载https://gith ...
- Docker推送镜像到Dockerhub
登录docker hub官网注册账号 https://hub.docker.com/signup 登录账户,创建一个仓库 "Create Repository"--> 输入命 ...
- blocks (单调栈)
题目描述 解析 对于这道题,他要求大于k的数进行操作,所以直接让每个数减k,然后用前缀和维护一下与0比较就可以了,因为一段区间和的平 均值大于k的话,那么这就是一个合法区间,即为操作后的这个区间和大于 ...
- Splashtop 免费60天 大赠送
这两天又是双11,又是 EDG 夺冠,可谓喜事连连.热闹不断.我们也给大家准备了一份长达两个月的免费福利,快乐加倍嗷. 福利详情: 1.分享这篇文章(不要设置分组可见). 2.发送您的 Splasht ...
- Vue3学习(二十四)- 文档页面功能开发
写在前面 这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现. 说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考, ...
- C语言:输入一个整数并让其逆反输出。123->321
主要思想为: a)计算输入的位数有多少个 b)计算出最高位的单位(若最高位为是万位, 那么需要一个变量存储最高位数值1000) c)用取模的方法从个位数开始进行取出每一个单位上的数字 d)从个位数开始 ...
- fuser命令详解
fuser -mv 作用 fuser命令是用来显示所有正在使用着指定的file.file system或者sockets的进程信息.具体来说,fuser -mv的作用如下: 参数-m:指定一个被加载的 ...