MySql(21)用户与权限管理

一、用户管理

Mysql用户可分为普通用户和root用户。root用户是超级管理员,所拥有的权限,包括创建、删除、修改密码等所有权限
而普通用户只拥有被授予的各种权限。

1.1 登录Mysql服务器

# 登录完整命令
mysql -h hostname|hostIP -P prot -u username -p password DatabaseName -e sql语句
  • -h : 主机名或者ip
  • -P : 端口
  • -u : 用户名
  • -p : 密码
  • DatabaseName : 指明登录到哪个数据库
  • -e : sql语句

1.2 创建用户

# 创建用户 ttst 只允许本地连接(把@''去掉 默认为所有ip都可访问) 密码为 abc123 创建下后权限只有登录权限
create user 'ttst'@'localhost' identified by 'abc123';

修改用户用户信息直接修改user表就行

1.3 删除用户

drop

# 可同时删除多个也可以删除单个默认Host是%
drop user username1,username2,username3....
# 如果用户的host字段是localhost需要使用以下命令
drop user username@'localhost'

也可以使用delete(不推荐)

delete from mysql.user where host='hostname' and user='username';

不推荐使用 delete 进行删除,系统会有残留信息。drop会将user的对应的权限也删除,但delete不会。

1.4 修改用户密码

1.4.1 修改自己的密码

alter (推荐)

alter user user() identified by '123456'

set

set password = '123456'

1.4.2 修改别人的密码

alter (推荐)

alter user 'username'@'%' identified by '123456'

set

set password for 'username'@'%' = '123456'

1.5 密码过期策略

  1. 密码过期:要求定期修改密码
  2. 密码重用限制:不允许使用旧密码
  3. 密码强度评估:要求使用高强度密码

1.5.1 密码过期策略

  • 在MySQL中,数据库管理员可以手动设置账号密码过期,也可建立一个自动密码过期策略
  • 过期策略可以是全局的,也可以是为每个账号设置单独的过期策略

手动设置立马过期

alter user user password expire;

密码过期后仍可以进入数据库,但无法查询。只有当用户自行设置新密码才可以正常使用.

手动设置指定时间过期方式:全局

如果密码使用的时间大于允许时间,服务器会自动设置为过期,不需要手动设置。
MySql使用default_password_lifetime系统变量建立全局密码过期策略。

  • 默认值为0,表示禁用自动密码过期。
  • 它允许的值是整数N,表示密码生存期。密码必须每隔N天进行修改。
set persist default_password_lifetime = 180; # 建立全局策略,每隔180天过期

手动设置指定时间过期方式:单独

# 创建时90天过期
create user 'username' password expire interval 90 day;

1.5.2 密码重用策略

MySQL限制使用已用过的密码。重用限制策略基于密码更改的数量使用时间。重用策略可以是全局
的,也可以为每个账号设置单独的策略

  • 账号的历史密码包含过去该账号所使用的密码,Mysql基于以下规则来限制密码重用:
    • 如果账号的密码限制基于密码修改的数量,那么新密码不能从最近限制的密码数量中选择。例如,如果密码更改的最小值为3,那么新密码不能与最近3个密码中任何一个相同
    • 如果账号密码限制基于时间,那么新密码不能从规定时间内选择。例如,如果密码重用周期为60天,那么新密码不能从最近60天内使用的密码中选择。
  • MySql使用password_history和password_reuse_interval系统变量设置密码重用策略。
    • password_history:规定密码重用的数量
    • password_reuse_interval:规定密码重用周期
  • 这两个值可在服务器的配置文件中进行维护,也可以在运行期间使用SQL语句更改该变量的值并持久化。

手动设置密码重用方式:全局

命令

# 设置不能使用最近使用过的6个密码
set persist password_history = 6;

# 设置不能选择最近一年内的密码
set persist password_reuse_interval = 365;

配置

[mysqld]
password_history=6
password_reuse_interval=365

手动设置密码重用方式:单独

create user 'username' password history 5;

create user 'username' password reuse interval 365 day;

二、权限管理

2.1 权限列表

展示所有权限

show privileges ;
权限分布可能设置的权限
表权限select insert update delete create drop grant references index alter
列权限select insert update references
过程权限execute alter routine grant

2.2 授予权限的原则

权限控制主要是出于安全因素,因此要遵循以下几个经验原则:

  1. 只能授予满足需要的最小权限
  2. 创建用户时限制用户的登陆主机一般是限制成指定ip或者内网。
  3. 为每个用户设置满足密码复杂度的密码
  4. 定期清理不需要的用户,回收权限或删除用户

2.3 授予权限

给用户授权的方式有2种,分别是通过把角色赋予用户给用户授权直接给用户授权

grant 权限1,权限2,...权限N on 数据库名.表名称 to 用户名@用户地址;

2.4 查看权限

查看当前权限

# 这仨都行
show grants;
show grants for current_user;
show grants for current_user();

查看某用户全部权限

show grants for 'username'@'地址';

2.5 收回权限

revoke 权限1,权限2,...权限N on 数据库名.表名称 from 用户名@用户地址;

三、权限表

Mysql服务通过 权限表控制用户对数据库的访问
权限表存放在 mysql数据库中。MySQL数据库系统会根据这些权限表的内容为每个用户赋予相应的权限。
这些表中最重要的是 user表 db表 除此之外还有 table_priv表 column_priv表 proc_priv表
在MySQL启动时,服务器将这些数据库表中权限信息的内容读入内存

四、角色管理

角色的理解

角色是在Mysql8.0中引入的新功能。在mysql中, 角色是权限的集合,可以为角色添加或移除权限。用户可以被赋予角色,同事也被授予角色包含的权限。对角色进行操作需要较高的权限,并且像用户账户一样,角色可以拥有授予和撤销的权限。

引入角色的目的是 方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性,这是至关重要的。

创建角色

# 创建角色 manager 角色 
create role 'manager'@'%'

# 授予 manager角色 dbtest1数据库中所有表的查询更新的权限
grant select,update on dbtest1.* to 'manager';

# 授予 boss角色 所有权限(boss角色需要自行创建)
grant all privileges on *.* to 'boss';

查看权限

# 查看某个角色的权限
show grants for 'manager'@'%'

回收权限

revoke privileges on tablename from 'rolename';

删除角色

drop role 'rolename';

给用户某个权限

# 将manager角色 给到 lisi用户
grant 'manager'@'%' to 'lisi'@'%';

激活角色

set default 'manager'@'%' all to 'lisi'@'%';

设置角色默认激活

set global activate_all_roles_on_login=ON;

查看已激活角色

select current_role();

撤销用户角色

revoke role from user;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值