MySQL-用户与权限管理:用户管理、权限管理、角色管理

用户与权限管理

  • 用户与权限管理
    • 1.用户管理
      • 1.1 登录MySQL服务器
      • 1.2 创建用户
      • 1.3 修改用户
      • 1.4 删除用户
      • 1.5 设置当前用户密码
      • 1.6 修改其它用户密码
    • 2. 权限管理
      • 2.1 权限列表
      • 2.2 授予权限的原则
      • 2.3 授予权限
      • 2.4 查看权限
      • 2.5 收回权限
    • 访问控制
      • 连接核实阶段
      • 请求核实阶段
    • 3. 角色管理
      • 3.1 创建角色
      • 3.2 给角色赋予权限
      • 3.3 查看角色的权限
      • 3.4 回收角色的权限
      • 3.5 删除角色
      • 3.6 给用户赋予角色
      • 3.7 激活角色
      • 3.8 撤销用户的角色
      • 3.9 设置强制角色(mandatory role)
    • 总结

注:此为笔者学习尚硅谷-宋红康MySQL的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:尚硅谷!!!

用户与权限管理

1.用户管理

1.1 登录MySQL服务器

启动MySQL服务后,可以通过mysql命令来登录MySQL服务器,命令如下:

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"
  • -h参数后面接主机名或者主机IP,hostname为主机,hostIP为主机IP
  • -P参数后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口是3306,不使用该参数时自动连接到3306端口,port为连接的端口号。
  • -u参数后面接用户名,username为用户名
  • -p参数提示输入密码
  • DatabaseName参数指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库中,然后可以使用USE命令来选择数据库
  • -e参数后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL服务器
mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"

1.2 创建用户

CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];

举例:

CREATE USER zhang3 IDENTIFIED BY '123123'; # 默认host是 %
CREATE USER 'kangshifu'@'localhost' IDENTIFIED BY '123456';

1.3 修改用户

UPDATE mysql.user SET USER='li4' WHERE USER='wang5'; 
FLUSH PRIVILEGES;

1.4 删除用户

方式1:使用DROP方式删除(推荐)

DROP USER user[,user];

举例:

DROP USER li4 ; # 默认删除host为%的用户
DROP USER 'kangshifu'@'localhost';

在这里插入图片描述

方式2:使用DELETE方式删除(不推荐,有残留信息)

DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;
FLUSH PRIVILEGES;

1.5 设置当前用户密码

1. 使用ALTER USER命令来修改当前用户密码

ALTER USER USER() IDENTIFIED BY 'new_password';

2. 使用SET语句来修改当前用户密码

SET PASSWORD='new_password';

1.6 修改其它用户密码

1. 使用ALTER语句来修改普通用户的密码

ALTER USER user [IDENTIFIED BY '新密码'] 
[,user[IDENTIFIED BY '新密码']];

2. 使用SET命令来修改普通用户的密码

SET PASSWORD FOR 'username'@'hostname'='new_password';

2. 权限管理

2.1 权限列表

show privileges;
  • CREATE和DROP权限,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
  • SELECT、INSERT、UPDATE和DELETE权限允许在一个数据库现有的表上实施操作。
  • SELECT权限只有在它们真正从一个表中检索行时才被用到。
  • INDEX权限允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。
  • ALTER权限可以使用ALTER TABLE来更改表的结构和重新命名表。
  • CREATE ROUTINE权限用来创建保存的程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序,EXECUTE权限用来执行保存的程序。
  • GRANT权限允许授权给其他用户,可用于数据库、表和保存的程序。
  • FILE权限使用户可以使用LOAD DATA INFILE和SELECT … INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权限的用户都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)。

2.2 授予权限的原则

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

1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。

2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。

3、为每个用户设置满足密码复杂度的密码

4、定期清理不需要的用户,回收权限或者删除用户。

2.3 授予权限

GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
  • 该权限如果发现没有该用户,则会直接新建一个用户。
  • 给li4用户用本地命令行方式,授予atguigudb这个库下的所有表的插删改查的权限。
GRANT SELECT,INSERT,DELETE,UPDATE ON atguigudb.* TO li4@localhost;
  • 授予通过网络方式登录的joe用户 ,对所有库所有表的全部权限,密码设为123。注意这里唯独不包括grant的权限

在这里插入图片描述

在这里插入图片描述

GRANT ALL PRIVILEGES ON *.* TO joe@'%' IDENTIFIED BY '123';

2.4 查看权限

  • 查看当前用户权限
SHOW GRANTS; 
# 或 
SHOW GRANTS FOR CURRENT_USER; 
# 或 
SHOW GRANTS FOR CURRENT_USER();
  • 查看某用户的全局权限
SHOW GRANTS FOR 'user'@'主机地址';

2.5 收回权限

注意:在将用户账户从user表删除之前,应该收回相应用户的所有权限。

  • 收回权限命令
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;
  • 举例
#收回全库全表的所有权限 
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%'; 
#收回mysql库下的所有表的插删改查权限 
REVOKE SELECT,INSERT,UPDATE,DELETE ON mysql.* FROM joe@localhost;
  • 注意:须用户重新登录后才能生效

在这里插入图片描述

访问控制

连接核实阶段

在这里插入图片描述

请求核实阶段

在这里插入图片描述

3. 角色管理

3.1 创建角色

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

角色名称的命名规则和用户名类似。如果host_name省略,默认为%role_name不可省略,不可为空。

3.2 给角色赋予权限

GRANT privileges ON table_name TO 'role_name'[@'host_name'];

上述语句中privileges代表权限的名称,多个权限以逗号隔开。可使用SHOW语句查询权限名称

SHOW PRIVILEGES\G

3.3 查看角色的权限

SHOW GRANTS FOR 'role_name';

只要你创建了一个角色,系统就会自动给你一个“USAGE”权限,意思是连接登录数据库的权限

3.4 回收角色的权限

REVOKE privileges ON tablename FROM 'rolename';

3.5 删除角色

DROP ROLE role [,role2]...

注意,如果你删除了角色,那么用户也就失去了通过这个角色所获得的所有权限

3.6 给用户赋予角色

角色创建并授权后,要赋给用户并处于激活状态才能发挥作用

GRANT role [,role2,...] TO user [,user2,...];

查询当前已激活的角色

SELECT CURRENT_ROLE();

3.7 激活角色

方式1:使用set default role 命令激活角色

SET DEFAULT ROLE ALL TO 'kangshifu'@'localhost';

方式2:将activate_all_roles_on_login设置为ON

SET GLOBAL activate_all_roles_on_login=ON;

这条 SQL 语句的意思是,对所有角色永久激活

3.8 撤销用户的角色

REVOKE role FROM user;

3.9 设置强制角色(mandatory role)

方式1:服务启动前设置

[mysqld] 
mandatory_roles='role1,role2@localhost,r3@%.atguigu.com'

方式2:运行时设置

SET PERSIST mandatory_roles = 'role1,role2@localhost,r3@%.example.com'; #系统重启后仍然有效
SET GLOBAL mandatory_roles = 'role1,role2@localhost,r3@%.example.com'; #系统重启后失效

总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拯救鲨鱼!Helping wireshark!wireshark未响应解决方法

前言 做题的的时候 在用wireshark解密tls秘钥的时候 我的小鲨鱼突然未响应了 然后我多次尝试无果 并且殃及池鱼 我电脑上所有的流量包都打不开了?!!! 于是乎 尝试删了重下 还是未响应 开始怀疑电脑 重启电脑两次 还是打…

Ngnix常用配置及和基本功能讲解

Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。 1 核心配置 找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功能配置是由它提供的。 1.1 配置文件结构 Nginx的…

Xinstall:专业的App下载量统计工具,让推广效果可衡量

在移动互联网时代,App的下载量是衡量一个应用受欢迎程度的重要指标。然而,很多开发者和广告主在推广App时,都面临着一个共同的问题:如何准确统计App的下载量?这不仅关系到推广效果的评估,还直接影响到广告R…

lombok详解

一:概述 lombok是一种java使用的开发工具,可以帮助我们快速开发java中pojo实体类,通过注解消除java的冗余的java代码。 官网:projectlombok.org 原理:通过JDK6提供的新特性,在javac编译期间处理注解&…

Django admin日志记录模块的使用,拓展LogEntry日志记录跳转改动详情页,日志搜索等功能

1、django admin日志记录引入 在使用django admin开发后台管理系统时,可以在admin模块中将django admin自带的操作日志记录模块注册到管理面板 from django.contrib.admin.models import LogEntry 可以看到引入后django admin的菜单栏新增出了一条日志记录的按钮 …

QT windeployqt打包出现无法正常启动问题

QT 通过windeployqt 打包后出现的问题 原因QT构建选择的是64位的 但是windows下运行的却是32位的 步骤打开32的所在路径 一般在上一级目录会有安装好的64位的MSVC工具 运行打包即可

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题,那面试就离不开八股文,所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备&#xf…

梵宁教育课程深度解析:设计技能提升,从这里开始

在当今数字化快速发展的时代,设计技能已成为个人职业发展的重要一环。无论是从事广告、媒体、UI设计还是其他相关领域,拥有扎实的设计技能都意味着拥有了更多的职业机会和发展空间。梵宁教育,作为业界知名的教育机构,以其专业的课…

4.9作业

1、完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&…

推进数智化财务管理体系,助力企业降本提效

在数字经济快速发展的今天,数字化能力早已成为企业发展的核心竞争力。在开放、融合的数字经济大背景下,企业该如何将科技深度赋能业务,打造出高质量发展的新引擎?当财务管理缺乏精准化、精确化、及时性的问题逐渐显露,…

关于51单片机TMOD定时器的安全配置

定时器介绍: -------------------------------------------------------------------------------------------------------------------------- 首先配置的是控制寄存器 TCON 说直白点,这个寄存器就是用来计数的,打开计时器,关…

基于51单片机轮胎胎压监测系统—数码管显示

基于51单片机轮胎胎压监测系统 (仿真+程序+设计报告) 功能介绍 具体功能: 1.MPX4115压力传感器胎压检测; 2.ADC0832进行模数转换后,51单片机处理控制; 3.数码管显示胎压&#xff…

ST Motor Control Workbench生成工程报错PDSC version is not supported解决办法

文章目录 前言一、报错相关信息二、解决办法 前言 使用 ST Motor Control Workbench 5.4.4 FOC 电机开发工具和 stm32cubemx 6.1.1 生成的工程报错,记录一下解决的办法。 一、报错相关信息 报错信息如下: 2024-04-09 18:35:28,527 ERROR [LineInfo_to…

【Linux】虚拟化技术docker搭建SuitoCRM系统及汉化

CRM系统 CRM(Customer Relationship Management,客户关系管理)系统是一种用于管理和优化企业与客户关系的软件工具。在商业竞争激烈的现代社会中,CRM系统已成为许多企业提高销售、增强客户满意度和实现持续增长的重要工具。本文将…

FME学习之旅---day21

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 教程:AutoCAD 变换 相关的文章 为您的 DWG 赋予一些样式:使用 DWGStyler、模板文件、块等 FME数据检查器在显示行的方式上受到限制。它只能显示线条颜色,而…

一文讲清如何用BI进行商品分析之返货品画像分析

01 什么是商品画像,怎样进行商品分析 “用户画像对于小伙伴们来说并不陌生,那有小伙伴知道商品画像吗?其实它和用户画像一样,可以简单理解成是商品海量数据的标签。” 商品画像的意义在于可以对商品进行精准的定位,让…

Linux初学(十七)防火墙

一、防火墙简介 1.1 防火墙的类别 安全产品 杀毒: 针对病毒,特征篡改系统中的文件杀毒软件针对处理病毒程序防火墙: 针对木马,特征系统窃取防火墙针对处理木马 防火墙分为两种 硬件防火墙软件防火墙 硬件防火墙 各个网络安全…

鸿蒙、如何使用@ohos.contact 接口,实现对联系人的增删查改功能

介绍 本示例使用ohos.contact 接口,实现了对联系人的增删查改功能。 效果预览 使用说明 1.点击 按钮,跳转添加联系人界面,输入联系人信息,点击 √,确认添加联系人,并返回首页; 2.点击联系人…

关于阿里云centos系统下宝塔面板部署django/中pip install mysqlclient失败问题的大总结

python版本3.12.0 问题1 解决方案 sudo vim /etc/profile export MYSQLCLIENT_CFLAGS"-I/usr/include/mysql" export MYSQLCLIENT_LDFLAGS"-L/usr/lib64/mysql" Esc退出编辑模式 :wq退出并且保存 问题二 说是找不到 mysql.h头文件 CentOS ‘…

【Linux】进程的状态(运行、阻塞、挂起)详解,揭开孤儿进程和僵尸进程的面纱,一篇文章万字讲透!!!!进程的学习②

目录 1.进程排队 时间片 时间片的分配 结构体内存对齐 偏移量补充 对齐规则 为什么会有对齐 2.操作系统学科层面对进程状态的理解 2.1进程的状态理解 ①我们说所谓的状态就是一个整型变量,是task_struct中的一个整型变量 ②.状态决定了接下来的动作 2.2运行状态 2.…