mysql my.ini、登录、用户相关操作、密码管理、权限管理、权限表,角色管理

news2024/9/23 15:25:44

my.ini 配置文件格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

登录mysql

mysql -h hostname | IP -P port -u username -p database -e “select 语句”;

在这里插入图片描述

在这里插入图片描述

创建用户、修改用户、删除用户

create user ‘zen’ identified by ‘密码’ ## host 默认是 %

create user ‘zen’@‘localhost’ identified by ‘密码’

update user set user=‘zen123’ where user=‘zen’; # 如何有多个用户,需要家 and host=‘xxx’ 条件, 最后别忘记 Flush privileges ;

删除用户

方式1
drop user user1[,…usern ] ;
此处的user1: 用用户名和主机名组成。 zen@localhost
支持同时删除多个用户,用逗号隔开。
drop user zen ; drop user ‘zen’ ; # 默认是删除 host=%的用户
drop user ‘zen‘@’localhost’
flush privileges; 把权限表 重新加载到内存,让不退出登录,权限便可生效。
方式2
delete from mysql.user where Host=‘xxxx’ and user=‘xxxx’; ### host 和user 两个字段联合主键。
flush privileges;

建议
不推荐通过delete from user 进行删除,系统会有残留信息保留
drop user 命令删除用户以及对应的权限,执行命令后你会发现 mysql.user 表和 mysql.db 表的相应记录都消失了

在这里插入图片描述

在这里插入图片描述

修改密码

alter 和 set

root用户修改指定普通用户密码

alter user u identified by ‘密码’;
u: 由 用户名和主机名构成 ‘zen’@‘localhost’

set password for u=‘密码’
u:由 用户名和主机名构成 ‘zen’@‘localhost’

修改当前用户密码

alter user user() idenfited by ‘密码’;
user(): 返回是 当前登录用户的 用户名@主机名

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

密码管理

密码管理功能只针对使用基于MySQL授权插件的账号
这些插件如下:
mysql_native_password
sha256_password
caching_sha2_password
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
密码过期策略
手动设置 账号密码过期,也可以建立一个 自动 密码过期策略
过期策略 可以是 全局 也可以为 每个账号 设置单独的过期策略

手动设置立马过期
alter user ’zen‘@‘localhost’ password expire;
在这里插入图片描述

在这里插入图片描述>

手动设置指定时间过期方式1 全局
default_password_lifetime 系统变量建立全局密码过期策略
默认值 0 : 禁用自动密码过期
允许正整数N,表示允许的密码生存期。密码必须 每隔N天 进行修改
在这里插入图片描述

set persist default_password_lifetime=180; ### 没写 global,默认是 session, 建立全局策略,设置密码每个180天过期

配置文件 my.ini 全局 ###重启才能生效
[mysqld]
default_password_lifetime=180

单独设置 指定用户 过期策略
create user ‘xxx’@‘%’ identified by ‘密码’ password expire interval 90 DAY;
在这里插入图片描述
修改指定用户 密码过期时间
alter user ‘xxx’@‘%’ password expire interval 100DAY;在这里插入图片描述

###设置密码永不过期
create user ‘XXX’@‘localhost’ password expire never
alter ser ‘XXX’@‘localhost’ password expire never

在这里插入图片描述

延用全局密码过期策略

create user ‘XXX’@‘localhost’ password expire default
alter ser ‘XXX’@‘localhost’ password expire default
在这里插入图片描述

密码重用策略

mysql限制使用已用过的密码。 重用限制策略基于 密码更改的数量和使用的时间
重用策略可以是 全局 的,也可以为每个账号设置 单独的策略
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

mysql 使用 password_history 和 password_reuse_interval 系统变量设置密码重用策略
password_history : 规定密码重用的数量
password_reuse_interval: 规定密码重用的周期
这两个值 可以通过 my.ini 中维护 也可以在运行期间 通过 sql语句更改 变量的值 并持久化 persist

方式1 使用sql
set persist password_hostiry=6; # 设置不能选择最近使用过的6个密码
set persist password_reuse_interval=365; # 设置不能选择最近一年内的密码

方式2 my.ini
[mysqld]
password_history=6 # 设置不能选择最近使用过的6个密码
password_reuse_interval=365 # 设置不能选择最近一年内的密码

手动设置密码重用方式2:单独设置 ,上面 设置 都是 全局的
create user ‘xx’@‘localhost’ password history 5;
alter user ‘xx’@‘localhost’ password history 5;
在这里插入图片描述

create user ‘xx’@‘localhost’ password resuse interval 365 day;
alter user ‘xx’@‘localhost’ password resuse interval 365 day;
在这里插入图片描述

既不能使用最近5个密码,也不能使用365天内的密码
create user ’XXX‘ @’localhost‘
identified by ’密码‘
password history 5
reuse interval 365;

alter user ’XXX‘ @’localhost‘
password history 5
reuse interval 365 day;

延后全局策略
create user ’XXX‘ @’localhost‘
identified by ’密码‘
password history default
reuse interval default;

alter user ’XXX‘ @’localhost‘
password history default
reuse interval 365 default;

在这里插入图片描述

授权

语法格式:
grant 权限列表 on 库名.表名 to 用户名@‘客户端主机’ ### 当未查询到用户名时会自动创建
[identified by ‘密码’] [with grant option];
grant all privileges on . to root@“IP地址” identified by ‘密码’ with grant option;
all privileges: 表示所有权限。
identified by:指定用户的登录密码
with grant option表示该用户可以将自己拥有的权限授权给别人。

grant 权限叠加
grant select on zen.employee to ‘xx’@’%‘ ;
grant update on zen.employee to ‘xx’@’%‘ ;
所以 zen 用户 拥有 select 和update 权限
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

– 查看当前用户(自己)权限
show grants;
show grants for current_user;
show grants for current_user();

查看指定用户的权限
show grants for dba@localhost;

权限收回

revoke 收回权限之后,用户账户的记录将从 db、host、tables_priv和 columns_priv 表中删除,但用户账户记录仍然存在 user表中
要删除user表中记录 需要 drop user语句

在这里插入图片描述

revoke all privileges on . from dba@localhost;
revoke 权限列表 on 数据库.表 from 用户名@localhost;
回收之后,对应用户需要重新进入。
在这里插入图片描述

权限表

在这里插入图片描述

  1. user xxx_priv 是针对所有数据库的权限
    grant select on . to zen@localhost ; user表中 Select_priv 就变成 Y啦

在这里插入图片描述

  1. db 是针对具体的数据库权限
    grant select on test.* to zen@localhost ; user表中 Select_priv 就变成 Y啦
    在这里插入图片描述
    在这里插入图片描述
  1. tables_priv
    在这里插入图片描述
  1. columns_priv
    grant select(列1,列2) on test.表 to zen@localhost
    在这里插入图片描述

mysql请求的过程

一般软件针对权限都分2个阶段

  1. 登录权限 只可以登录,不能操作系统
  2. 操作权限 可以操作授权的模块。

当mysql允许一个用户执行各种操作时,它将 ①首先 核实该用户向MySQL服务发送的连接请求 ②确认用户的操作请求是否被允许。
这个过程 mysql 称为 访问控制过程
mysql 访问控制过程分2个阶段

  1. 连接核实阶段 等价于 登录权限阶段
  2. 请求核实阶段 等价于 操作权限阶段

连接核实阶段
客户端用户连接请求中 提供 用户名,主机地址 ,用户密码 =》 mysql -hlocalhost -uroot -p
请求到达 mysql服务器时, 会于 mysql中的 user表 中的 user、host、authentication_string 三个字段匹配客户端信息

当连接核实阶段,通过,则进入 第二个阶段,即 请求阶段,否则 拒绝

请求核实阶段
在这里插入图片描述

连接请求核实通过后, 对此连接上进来的每个请求,服务器检查该请求要执行什么操作,是否有足够的权限来执行。这正是需要权限表中的权限列发挥作用的地方。这里的权限可以来自 user,db,tables_priv,columns_priv 等

确认权限时,是有顺序的, 从大权限到小权限
①mysql首先检查user表,如果没有指定的权限
②那么MySQL就会继续检查db表 db表是下一层安全层级,其中的权限限定于数据库层级,在该层级的select权限允许用户查看指定数据库的所有表中的数据;如果在该层级没有找到限定的权限,
③那么mysql就会继续 检查tables_priv表 ,tables_priv表是下一层安全层级,其中的权限限定于表的层级,在该层级的select权限允许用户查看指定表中的(所有列)数据;如果在该层级没有找到限定的权限,
④那么mysql就会继续 检查columns_priv表 ,

如果所有权限表都检查完毕,但还是没有找到允许的权限操作,mysql 将 返回错误信息 ,用户请求的操作不能执行,操作失败
在这里插入图片描述

角色管理

在这里插入图片描述
创建角色

create [IF NOT EXISTS] role ‘role1’[@‘xxx’, role2@‘xxx’, …rolen@‘xxx’] ;
create role admin ; ### 如果不写主机名,mysql默认是 %,意思这个角色对应的账号,可以在任何一台主机上登录数据库
多个角色中间用 逗号 隔开
create role ’app_read’@‘IP地址’ ,‘app_check’ ;
给角色授权,查看角色权限
show privileges\G 查看权限清单

GRANT role [, role] 数据库.表 TO user_or_role [, user_or_role] …[WITH ADMIN OPTION]

grant 权限列表 on 数据库.表 to ‘role_name’[@‘host_name’] ;
grant select on . to ‘devp’;
show grants for ’角色‘;
在这里插入图片描述

删除角色

删除了角色,那么用户也失去了通过这个角色获得的所有权限
drop role ‘role1’[@host_name’ ,…,‘rolen’@‘host_name’];

用户赋予角色

grant role [, role2,…] TO user1[, role2…] ;
在这里插入图片描述
在这里插入图片描述

激活角色

你用赋予角色的用户去登录,发现没有对应的权限,这是因为mysql 中创建的角色之后,默认都是没有激活的,也不能用,
必须手动激活,才能获取对应权限

在这里插入图片描述

激活
激活可以自己激活,不一定需要用root激活
方式1
– 设置默认角色
SET DEFAULT ROLE ‘devp’ TO ‘migo’@‘%’;
语法
SET DEFAULT ROLE {NONE | ALL | role [, role ] …} TO user [, user ] …
如果已经登录,需要退出,再登录才生效
在这里插入图片描述
在这里插入图片描述

方式2
将 active_all_roles_on_login 设置 on
查看 show variables like ’active_all_roles_on_login‘;
在这里插入图片描述
设置
set global active_all_roles_on_login=ON; # 对所有角色永久激活

方式3 my.ini
#设置角色激活开启
[mysqld]
activate-all-roles-on-login=ON

撤销用户的角色、撤销用户的权限,撤销角色的权限

撤销用户的角色
revoke [IF EXISTS] 角色[,角色n] from 用户[@host_name, 用户n@host_name];
撤销用户的权限
revoke [IF EXISTS] 权限列表 ON 数据库.表 from 用户[@host_name, 用户n@host_name];

在这里插入图片描述
撤销角色的权限
revoke 权限列表 on 数据库.表 from role1[@‘host_name’,…rolen@host_name];

在这里插入图片描述
在这里插入图片描述

设置强制角色(mandatory role)

强制(mandatory)角色 是给每个创建的用户默认的角色,不需要手动设置的,
强制角色 无法被回收 revoke 和 删除 drop

方式1 服务启动前设置
mg.ini
[mysqld]
mandatory_roles=‘role1,role2@localhost,role3@%’;
方式2 运行时设置 persist 持久性 重启服务 仍然生效
set persist mandatory_roles=‘role1,role2@localhost,role3@%’;
重新生效
set global mandatory_roles=‘role1,role2@localhost,role3@%’;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建安全可信、稳定可靠的RISC-V安全体系

安全之安全(security)博客目录导读 2023 RISC-V中国峰会 安全相关议题汇总 说明:本文参考RISC-V 2023中国峰会如下议题,版权归原作者所有。

YARN资源管理框架论述

一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶颈,开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离&…

HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景一

1.获取应用文件路径 基类Context提供了获取应用文件路径的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均继承该能力。应用文件路径属于应用沙箱路径。上述各类Context获取的应用文件路径有所不同。 通过ApplicationContext…

VR法治警示教育:情景式课堂增强教育效果

VR法治警示教育平台是一款基于虚拟现实技术的在线教育平台,旨在通过模拟真实场景和互动体验,向公众普及法律知识,提高公民的法律意识和素养。该平台采用先进的虚拟现实技术,将用户带入一个逼真的仿真环境,让用户身临其…

【广州华锐互动】VR沉浸式体验红军长征路:追寻红色记忆,传承红色精神

在历史的长河中,长征无疑是一段充满艰辛和英勇的伟大征程。为了让更多的人了解这段历史,我们利用虚拟现实(VR)技术,为您带来一场沉浸式的体验,重温红军万里长征的壮丽篇章。 一、踏上长征之路 戴上VR眼镜&a…

RocketMQ教程-(6-5)-运维部署-Promethus Exporter

介绍​ Rocketmq-exporter 是用于监控 RocketMQ broker 端和客户端所有相关指标的系统,通过 mqAdmin 从 broker 端获取指标值后封装成 87 个 cache。 警告 过去版本曾是 87 个 concurrentHashMap,由于 Map 不会删除过期指标,所以一旦有 la…

南方CASS软件安装包分享

目录 一、软件简介 二、软件下载 一、软件简介 南方CASS软件是一款基于AutoCAD平台开发的测量和计算设计软件,广泛应用于水利、电力、市政、建筑、交通等领域。 南方CASS软件集成了地形测量、断面测量、土地勘测定界、水文水利和公路设计等功能,为测…

JS 数组中对象 某属性相同对某属性的值进行相加去重(支持多条件多个值判断相加)

/* delSameObjValue 数组对象相同值相加去重arr 需要处理的数组resultNum 最终计算结果的键名keyName 用于计算判断的键名 keyValue 用于计算结果的键名 --> 对应的键值为number类型 */function delSameObjValue(arr, resultNum, keyName, keyValue) {const warp new Map(…

微信开发之一键创建微信群聊的技术实现

创建微信群 本接口为敏感接口,请查阅调用规范手册创建后,手机上不会显示该群,往该群主动发条消息手机即可显示。 请求URL: http://域名地址/createChatroom 请求方式: POST 请求头Headers: Content-T…

Navisworks2020~2023安装包分享

目录 一、软件介绍 二、下载地址 一、软件介绍 Navisworks是一款专业的建筑、工厂、机械和设备设计软件工具,旨在帮助项目相关方可靠地整合、分享和审阅详细的三维设计模型。它提供了一系列功能强大的工具,使设计师、工程师和建筑师能够更好地协作、沟…

PB4引脚作GPIO上电高电平问题

问题说明 给旧项目debug,芯片是国民技术 N32G452VEL7 (用起来跟32没多大差 包括PB4在内有多个引脚作为输出,默认低电平,在状态机内先输出高电平再回到低电平,来模拟按键的状态(相当于按键按下松开后按键功…

Docker使用mysql:5.6和 owncloud 镜像,构建一个个人网盘,安装搭建私有仓库 Harbor

一、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 [rootlocalhost ~]# docker pull mysql:5.6[rootlocalhost ~]# docker pull owncloud[rootlocalhost ~]# docker run -itd --name mysql --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 d45cc5b95f00692881baaf…

vscode的远程代码调试

目录 ssh连接 xdebug调试 ssh连接 在vscode中下载该插件 这里用虚拟机测试&#xff0c;这里用虚拟机测试&#xff0c;注意ssh是可以连接的 然后安装好remote后&#xff0c;点击左下角的>< 在弹出的这个上选择connect to host连接一台主机 配置完用户名和IP后再点一次发…

<C++>泛型编程-模板

1.泛型编程 如何实现一个通用的交换函数呢&#xff1f;可以使用函数重载 void Swap(int &left, int &right) {int temp left;left right;right temp; }void Swap(double &left, double &right) {double temp left;left right;right temp; }void Swap(c…

ES6中promise的使用

ES6中promise的使用 本文目录 ES6中promise的使用基础介绍箭头函数function函数状态 原型方法Promise.prototype.then()Promise.prototype.catch() 静态方法Promise.all()Promise.race()Promise.any() 链式回调 基础介绍 官网&#xff1a;https://promisesaplus.com/ window.…

数据处理 | Python实现基于DFCP张量分解结合贝叶斯优化的缺失数据填补

数据处理 | Python实现基于DFCP张量分解结合贝叶斯优化的缺失数据填补 目录 数据处理 | Python实现基于DFCP张量分解结合贝叶斯优化的缺失数据填补实践过程基本介绍研究背景程序设计参考资料实践过程 基本介绍 数据处理 | Python实现基于DFCP张量分解结合贝叶斯优化的缺失数据填…

bug复刻,解决方案---在改变div层级关系时,导致传参失败

问题描述&#xff1a; 在优化页面时&#xff0c;为了实现网页顶部遮挡效果&#xff08;内容滚动&#xff0c;顶部导航栏不随着一起滚动&#xff0c;并且覆盖&#xff09;&#xff0c;做法是将内容都放在一个div里面&#xff0c;为这个新的div设置样式&#xff0c;margin-top w…

Android 之 LayoutInflater (布局服务)

本节引言&#xff1a; 本节继续带来的是Android系统服务中的LayoutInflater(布局服务)&#xff0c;说到布局&#xff0c;大家第一时间 可能想起的是写完一个布局的xml&#xff0c;然后调用Activity的setContentView()加载布局&#xff0c;然后把他显示 到屏幕上是吧~其实这个底…

lnmp架构-tomcat session

tomcat session共享 部署 tomcat 在server2 和 server3上进行同样的操作 保存的信息都会在tomcat日志中保存 tomcat 与nginx的整合 在server1上 当并发量开始增大时 就得做负载均衡 解决 当一个tomcat服务器挂掉后 另一个服务器上有第一个服务器上提交的数据问题 在server2…

wx:for的使用和事件传参,解构赋值的应用

在页面的.js文件中创建了一个对象&#xff0c; 并且在页面的view中调用了两种不同的方法将对象中的元素显示出来&#xff01; 第2种代码要加强理解&#xff01;&#xff01;&#xff01; 小程序中的wx:if wx:elif wx:else 其实好像c语言中的 if-elif-else 在页面的.j…