MariaDB权限详解

前言

本文所有内容基于 10.9.3-MariaDB 版本

用户、角色、权限的关系

每个用户可以绑定多个角色,但是在会话中只能同时能对应一个角色,且拥有改角色的权限,但是一个角色可以通过继承(我自己理解成继承)多个其他角色的权限

具体在实践中的使用方案可参照下图

 

命令详解
创建用户

#创建创建996448的用户,此用户可以通过任意ip登录,密码为qazwsx123
create user '996448'@'%' identified by 'qazwsx123';

# 创建创建bigdata_u的用户,此用户可以通过当前ip登录,密码为qazwsx
create user 'bigdata_u'@'localhost' identified by 'qazwsx';

修改用户密码(管理员权限的账户可以修改普通用户的密码,普通用户可以修改自己的密码)

# 将996448用户密码修改为qaz123
set password for '996448'@'%'=password('qaz123');

创建角色

#创建角色 extract_jkdl_r
create role 'extract_jkdl_r'

删除角色

# 删除角色
drop role app_jkdl;

查看所有角色和用户

#查看角色或用户
select * from mysql.`user` u  where is_role = 'Y'
 

给角色或用户赋权

权限分类有:select,insert,update,DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW, TRIGGER, DELETE HISTORY
执行了权限更改后都需要执行权限刷新的操作进行激活

# 权限刷新
flush privileges;
# 将test库的所有权限赋给 app_jkdl_r角色
grant all privileges on test.* to 'app_jkdl_r';

# 将test库的hr_t表的select,insert权限分配给hr角色
grant select,insert on test.hr_t to 'hr';

# 将所有表的所有权限赋给 bigdata_u 用户
grant all privileges on *.* to 'bigdata_u'@'%';

撤销权限

# 撤销 fdj角色,对test库的所有权限
REVOKE all privileges  ON test.*  FROM 'fdj';
# 查看角色权限
show grants for '996448'

角色间的权限

#把一个的权限赋值给第二个角色
grant 'app_jkdl_r' to '996448_r';

所有角色能使用的前提的角色进行了激活

#查看
show variables like 'activate_all_roles_on_login';

#对所有角色永久激活。运行这条语句之后,用户才真正拥有了赋予角色的所有
set global activate_all_roles_on_login = ON;

查询当前用户使用的角色,设置当前用户的角色

#授予权限后需要激活才生效 前提是用户已经和角色绑定,且一个用户同时只能有一个角色的权限
# 设置当前用户对应的角色
SET ROLE staff;

# 查询当前用户当前所使用的角色
SELECT CURRENT_ROLE;

# 设置用户的默认角色
set default 'role_name'[@ 'host_name'] all to 'user_name'[@ 'host_name'];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值