数据库的⽤户和权限管理

数据库的⽤户和权限管理

  • 应⽤场景
  • ⽤户
    • 查看⽤户
    • 创建⽤户
      • 语法
      • 注意事项
      • 示例
    • 修改密码
      • 语法
      • 示例
    • 删除⽤户
      • 语法
  • 权限与授权
    • 给⽤户授权
      • 语法
      • ⽰例
    • 回收权限
      • 语法
      • ⽰例

应⽤场景

数据库服务安装成功后默认有⼀个root⽤户,可以新建和操纵数据库服务中管理的所有数据库。在真实的使⽤过程中,通常每个应⽤对应着⼀个数据库,我们只希望某个⽤户只能操纵和管理当前应⽤对应的那个数据库,⽽不能操纵和管理其他应⽤的数据库,这时就可以添加⼀个⽤户并指定⽤户的权限。
在这里插入图片描述
如上图所示:
• root 可以访问和操纵所有的数据库:DB1, DB2, DB3, DB4
• 普通⽤户1 只能访问和操纵数据库DB1
• 普通⽤户2 只能访问和操纵数据库DB3
• 只读⽤户1 只能访问数据库DB3
• 只读⽤户2 只能访问数据库DB4

⽤户

查看⽤户

MySQL的⽤户信息保存在mysql系统数据库的user表中,可以通过Select语句查看,如下所⽰:

# 选择数据库
use mysql;

# 查看所有的表
show tables;

# 查看表结构
desc user;

#查询user表中的记录
select host, user, authentication_string from user;

• host: 允许登录的主机,相当于⽩名单,如果是localhost,表⽰只能从本机登陆
• user: ⽤户名
• *_priv: ⽤户拥有的权限
• authentication_string: 加密后的⽤户密码

创建⽤户

语法

CREATE USER [IF NOT EXISTS] 'user_name'@'host_name' IDENTIFIED BY 'auth_string';

user_name: ⽤户名,⽤单引号包裹,区分⼤⼩写
host_name: 主机或IP(段),⽤单引号包裹
auth_string: 真实密码,有些密码策略不允许使⽤简单密码

注意事项

  • 如果不指定host_name相当于’user_name’@‘%’, %表⽰所有主机都可以连接到数据库,强烈建议不要这样设置,因为会导致严重的安全问题
  • user_name和host_name分别⽤单引号包裹,如果写成’user_name@host_name’,相当于’user_name@host_name’@‘%’
  • host_name可以通过⼦⽹掩码设置主机范围
    • 198.0.0.0/255.0.0.0 : A段⽹络中的任意⼀台主机
    • 198.51.0.0/255.255.0.0: 198.51 B段⽹络中的任意⼀台主机
    • 198.51.100.0/255.255.255.0: 198.51.100 C段⽹络中的任意⼀台主机
    • 198.51.100.1 :只包含特定IP地址的主机
  • 从MySQL 8.0.23开始,指定为IPv4地址的主机值可以使⽤CIDR表⽰法写⼊,例198.51.100.44/24
  • 允许在IP地址中使⽤%通配符,⽐如,主机值’%'匹配任何主机名, 198.51.100.% 匹配198.51.100 C段⽹络中的任何主机。MySQL 8.0.35中已弃⽤,以后可能会删除

示例

# 添加一个名为star的新用户,允许从本机登录
create user 'star'@'localhost' identified by '123456';

# 添加一个名为star1的新用户,允许从192.168.1.1/24网段登录
mysql> create user 'star1'@'192.168.1.1/24' identified by '123456';

# 查询,添加成功
select host, user, authentication_string from user\G;

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

# 使用新用户登录
mysql -ustar -p

在这里插入图片描述

修改密码

语法

# 为指定用户设置密码 【推荐】
ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'auth_string';
# 为指定用户设置密码
SET PASSWORD FOR 'user_name'@'host_name' = 'auth_string';
# 为当前登录用户设置密码
SET PASSWORD = 'auth_string';

示例

# 以root身份登录,为'star'@'localhos
ALTER USER 'star'@'localhost' IDENTIFIED BY '987654';

# 以root身份登录,为'star'@'localhost'用户重置密码
SET PASSWORD FOR 'star'@'localhost' = '123456';

# 以star登录,并确认当前登录用户,USER()与CURRENT_USER()是同义词
select USER();

# 修改当前登录用户的密码
 SET PASSWORD = '111111';

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

删除⽤户

语法

DROP USER [IF EXISTS] 'user_name'@'host_name'[, ...];
# 删除用户'star1'@'192.168.1.1/24'
drop user 'star1'@'192.168.1.1/24';

# 删除成功
select host, user, authentication_string from user;

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

权限与授权

• MySQL内置⽀持的权限列表
在这里插入图片描述

给⽤户授权

刚创建的⽤户没有任何权限,需要给他授权,如下所⽰:

select user();
 
# 看不到其他的数据库
show databases;

在这里插入图片描述

语法

grant priv_type[, priv_type ...] on priv_level
	to 'user_name'@'host_name' [WITH GRANT OPTION]

• priv_type:根据类型,参考根据列表4.1中的Privilege列
• priv_level: * |* . * | db_name.* | db_name.tbl_name | tbl_name,⽐如*.*表⽰所有数据库下的所有表
• ‘user_name’@‘host_name’:指定⽤户
• [WITH GRANT OPTION]:可选,允许⽤户将⾃⼰的权限授权给其它⽤户

⽰例

• 为star@localhost⽤户授权于 java03 数据库的 select 权限

# 授权
grant select on java03.* to 'star'@'localhost';
# 查看数据库,可以看到java03
show databases;

# 选择数据库
use java03;

# 查看所有表
show tables;

# 查询数据
select * from student;

# 写入一条数据时失败,因为没有授权写入权限
insert into student values (null, '500001' ,'test', NULL, 1);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
• 查看star@localhost⽤户权限, USAGE 表⽰在指定的priv_level上没有权限

show grants for 'star'@'localhost';

在这里插入图片描述
• 为star@localhost⽤户授权于java03数据库的所有权限

# ALL为所有权限
grant ALL on java03.* to 'star'@'localhost';

# 查看用户权限
show grants for 'star'@'localhost';

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

# 插入一条新记录
insert into student values (null, '500001' ,'test', NULL, 1);

# 不成功说明权限没有生效,需要刷新权限,如果还不成功可以重新登录
flush privileges;

# 重新执行插入操作
insert into student values (null, '500001' ,'test', NULL, 1);

# 查看记录
select * from student;

# 删除操作
delete from student where student_id = 9;

# 删除成功
select * from student;

在这里插入图片描述

在这里插入图片描述

回收权限

语法

REVOKE [IF EXISTS] priv_type[, priv_type] ... ON priv_level
	FROM 'user_name'@'host_name' [, 'user_name'@'host_name'] ...

⽰例

• 回收star@localhost⽤户对于 java03 数据库的权限

REVOKE all on *.* from 'star'@'localhost';

# 刷新权限
flush privileges;

# 查看权限,没有任何授权
show grants for 'satr'@'localhost';
# 查看所有数据库,没有可以访问的库
show databases;

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


关于数据库的⽤户和权限管理先了解到这里,希望这篇文章对大家有帮助,谢谢大家的阅读!!!

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

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

相关文章

C语言数据结构-栈和队列

C语言数据结构-栈和队列 1.栈1.1概念与结构1.2栈的实现1.2.1结构体定义1.2.2初始化1.2.3销毁1.2.4入栈1.2.5出栈1.2.6取栈顶处的元素1.2.7获取栈中有效的个数 2.队列2.1概念与结构2.2队列的实现2.2.1结构体定义2.2.2入队列2.2.3判断是否为空2.2.4队列中的有效元素个数2.2.5删除…

[CTF/网络安全] 攻防世界 upload1 解题详析

[CTF/网络安全] 攻防世界 upload1 解题详析 考察文件上传&#xff0c;具体原理及姿势不再赘述。 姿势 在txt中写入一句话木马<?php eval($_POST[qiu]);?> 回显如下&#xff1a; 查看源代码&#xff1a; Array.prototype.contains function (obj) { var i this.…

TiDB 优化器丨执行计划和 SQL 算子解读最佳实践

作者&#xff1a; TiDB社区小助手 原文来源&#xff1a; https://tidb.net/blog/5edb7933 导读 在数据库系统中&#xff0c;查询优化器是数据库管理系统的核心组成部分&#xff0c;负责将用户的 SQL 查询转化为高效的执行计划&#xff0c;因而会直接影响用户体感的性能与稳…

监控视频汇聚平台:Liveweb视频监控管理平台方案详细介绍

Liveweb国标视频综合管理平台是一款以视频为核心的智慧物联应用平台。它基于分布式、负载均衡等流媒体技术进行开发&#xff0c;提供广泛兼容、安全可靠、开放共享的视频综合服务。该平台具备多种功能&#xff0c;包括视频直播、录像、回放、检索、云存储、告警上报、语音对讲、…

10个Word自动化办公脚本

在日常工作和学习中&#xff0c;我们常常需要处理Word文档&#xff08;.docx&#xff09;。 Python提供了强大的库&#xff0c;如python-docx&#xff0c;使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本&#xff0c;帮助新…

ROS VSCode调试方法

VSCode 调试 Ros文档 1.编译参数设置 cd catkin_ws catkin_make -DCMAKE_BUILD_TYPEDebug2.vscode 调试插件安装 可在扩展中安装(Ctrl Shift X): 1.ROS 2.C/C 3.C Intelliense 4.Msg Language Support 5.Txt Syntax 3.导入已有或者新建ROS工作空间 3.1 导入工作…

排序学习整理(1)

1.排序的概念及运用 1.1概念 排序&#xff1a;所谓排序&#xff0c;就是使⼀串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff0c;以便更容易查找、组织或分析数据。 1.2运用 购物筛选排序 院校排名 1.3常见排序算法 2.实…

TYUT设计模式大题

对比简单工厂&#xff0c;工厂方法&#xff0c;抽象工厂模式 比较安全组合模式和透明组合模式 安全组合模式容器节点有管理子部件的方法&#xff0c;而叶子节点没有&#xff0c;防止在用户在叶子节点上调用不适当的方法&#xff0c;保证了的安全性&#xff0c;防止叶子节点暴露…

指针与引用错题汇总

int *p[3]; // 定义一个包含 3 个指向 int 的指针的数组int a 10, b 20, c 30; p[0] &a; // p[0] 指向 a p[1] &b; // p[1] 指向 b p[2] &c; // p[2] 指向 c // 访问指针所指向的值 printf("%d %d %d\n", *p[0], *p[1], *p[2]); // 输出: 10 20 30…

uniapp中scrollview配合swiper实现一个简单的tab标签页

<template><view class"tab-container"><!-- Tab 标签滚动容器 --><scroll-view scroll-x"true" class"tab-scroll" scroll-with-animation"true"><view class"tab-list"><viewv-for"…

opengl 三角形

最后效果&#xff1a; OpenGL version: 4.1 Metal 不知道为啥必须使用VAO 才行。 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include <vector>void framebuffer_size_callback(GLFWwindow *window, int width, int heigh…

Qml-TabBar类使用

Qml-TabBar类使用 TabBar的概述 TabBar继承于Container 由TabButton进行填充&#xff0c;可以与提供currentIndex属性的任何容器或布局控件一起使用&#xff0c;如StackLayout 或 SwipeView&#xff1b;contentHeight : real:TabBar的内容高度&#xff0c;用于计算标签栏的隐…

Windows常用DOS指令(附案例)

文章目录 1.dir 查看当前目录2.cd 进入指定目录3.md 创建指定目录4.cd> 创建指定文件5.rd 删除指定空目录6.del 删除指定文件7.copy 复制文件8.xcopy 批量复制9.ren 改名10.type 在命令行空窗口打开文件11.cls 清空DOS命令窗口12.chkdsk 检查磁盘使用情况13.time 显示和设置…

YOLOv11 NCNN安卓部署

YOLOv11 NCNN安卓部署 前言 yolov11 NCNN安卓部署 目前的帧率可以稳定在20帧左右&#xff0c;下面是这个项目的github地址&#xff1a;https://github.com/gaoxumustwin/ncnn-android-yolov11 上面的检测精度很低时因为这个模型只训练了5个epoch&#xff0c;使用3090训练一个…

C++内存对齐

在 C 中&#xff0c;内存对齐 是一种编译器和硬件协作的机制&#xff0c;用于将数据存储在内存中时按照一定的规则进行排列&#xff0c;以提高数据访问的效率。其目的是确保数据在内存中的地址满足硬件对齐要求&#xff0c;并优化 CPU 访问速度。 C 中内存对齐的基本概念 对齐单…

365天深度学习训练营-第P6周:VGG-16算法-Pytorch实现人脸识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文为「365天深度学习训练营」内部文章 参考本文所写记录性文章&#xff0c;请在文章开头带上「&#x1f449;声明」 &#x1f37a;要求&#xff1a; 保存训练过…

SAP SD学习笔记15 - 返品处理流程2 - 参照请求传票(发票)来生成返品传票

上一章讲了返品处理&#xff08;退货处理&#xff09;的流程。 SAP SD学习笔记14 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#xff0c;比如 返品传票&#xff1b;请求Block标记&#xff1b;收到退货之后的处理&#xff0c;请求传票的登录_sap 销售返品…

Flutter 1.1:下载Flutter环境

1、在AS中下载Flutter插件 在setting的Plugins中下载Flutter&#xff0c;如图所示&#xff0c;可以直接进行搜索查找 2、下载flutter的sdk源代码 flutter中文文档学习 通过Git下载SDK源代码 git clone -b stable https://github.com/flutter/flutter.git3、配置系统变量 3…

电子应用设计方案-31:智能AI音响系统方案设计

智能 AI 音响系统方案设计 一、引言 智能 AI 音响作为一种新兴的智能家居设备&#xff0c;通过融合语音识别、自然语言处理、音频播放等技术&#xff0c;为用户提供便捷的语音交互服务和高品质的音乐体验。本方案旨在设计一款功能强大、性能稳定、用户体验良好的智能 AI 音响系…

损失函数分类

1. NLLLoss&#xff08;负对数似然损失&#xff09; 定义&#xff1a; 直接对预测的概率 p(yi) 的负对数求平均。通常配合 Softmax 使用&#xff0c;输入为对数概率。 优点&#xff1a; 对离散分类问题效果良好。更灵活&#xff0c;用户可以自行计算 Softmax。 缺点&#x…