MySQL用户管理(15)

文章目录

  • 前言
  • 一、用户
    • 用户信息
    • 创建用户
    • 修改密码
    • 删除用户
  • 二、数据库的权限
    • MySQL中的权限
    • 给用户授权
    • 回收权限
  • 总结


前言

  其实与 Linux 操作系统类似,MySQL 中也有 超级用户普通用户 之分

  如果一个用户只需要访问 MySQL 中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作,由此就有了我们该篇的讲解,即 用户管理!


一、用户

用户信息

  MySQL 当中默认有一个名为 mysql 的数据库

在这里插入图片描述

  查看该数据库中的表,可以看到其中有一个名为 user 的表

在这里插入图片描述

  user 表中存储的就是 MySQL 中用户相关的信息

在这里插入图片描述
部分的字段说明:

  • user: 表示该用户的用户名。
  • host: 表示该用户可以从哪个主机登录,localhost表示只能从本机登录,%表示可以从任意地方登录。
  • authentication_string: 表示该用户的密码经过password函数加密后的值。
  • xxx_priv: 表示该用户是否拥有对应权限。

  我们还可以只选择部分字段进行展示:
在这里插入图片描述
  同时我们注意到因为 user 表中的主键是复合主键,由表中的 user 列和 host 列共同承担,所以 MySQL 中可以存在同名的用户,只要这些同名用户对应的登录主机不同即可

在这里插入图片描述

创建用户

  创建用户的 SQL 如下:

CREATE USER '用户名'@'登录主机' IDENTIFIED BY '密码';

  比如下面创建一个用户名为 HQ ,并且可以从任意地方登录的用户

在这里插入图片描述
  创建用户成功后,该用户的相关信息也就被写入到刚才的 user 表中了

在这里插入图片描述
  这时便可以用新创建的普通用户来连接 MySQL 服务器了

在这里插入图片描述
  此外,由于我们创建的这个用户可以从任意地方登录,因此如果你在 Windows 下也安装了 MySQL ,那么就可以在 Windows 的 cmd 窗口进行远程登录

在这里插入图片描述

  • 创建用户的SQL当中包含用户的密码,因此该SQL不会被历史记录下来,所以不能通过上下键进行追溯。
  • MySQL本身的认证级别比较高,因此创建用户时设置的密码不能太简单,否则会出现报错,这时你可以选择将密码设置复杂一些,也可以对密码相关的设置进行调整。

  通过show命令查看全局变量,可以看到密码设置相关的要求
在这里插入图片描述

修改密码

  你可能会看到有些博主说 set password = password(‘你的密码’); 事实上在 MySQL 5.7.6 及更高版本中,PASSWORD() 函数已被弃用,且修改密码的语法发生了变化,所以这种方法失效了,有用的如下:

  用户自己和超级用户修改自己的密码

ALTER USER '用户名'@'主机名' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES; #刷新权限一下

删除用户

  删除用户的SQL语句如下:

DROP USER '用户名'@'登录地址';

在这里插入图片描述
  删除用户时如果不指明待用户的登录地址,则默认删除的是登录地址为 % 的用户。

二、数据库的权限

MySQL中的权限

权限列名上下文
CREATECreate_priv数据库、表或索引
DROPDrop_priv数据库或表
GRANT OPTIONGrant_priv数据库、表或保存的程序
REFERENCESReferences_priv数据库或表
ALTERAlter_priv
DELETEDelete_priv
INDEXIndex_priv
SELECTSelect_priv
UPDATEUpdate_priv
CREATE VIEWCreate_view_priv视图
SHOW VIEWShow_view_priv视图
ALTER ROUTINEAlter_routine_priv保存的程序
CREATE ROUTINECreate_routine_priv保存的程序
EXECUTEExecute_priv保存的程序
FILEFile_priv服务器主机上的文件访问
CREATE TEMPORARY TABLESCreate_tmp_table_priv服务器管理
LOCK TABLESLock_tables_priv服务器管理
CREATE USERCreate_user_priv服务器管理
PROCESSProcess_priv服务器管理
RELOADReload_priv服务器管理
REPLICATION CLIENTRepl_client_priv服务器管理
REPLICATION SLAVERepl_slave_priv服务器管理
SHOW DATABASESShow_db_priv服务器管理
SHUTDOWNShutdown_priv服务器管理
SUPERSuper_priv服务器管理

  新创建的用户没有任何权限,因此创建用户后需要给用户授权

给用户授权

  给用户授权的SQL如下:

-- 对于 MySQL8.0及以上版本,GRANT 语句 不能直接结合 IDENTIFIED BY 子句 来创建用户或修改密码。这两个操作需要分开执行。(问就是尝试过,绷)
-- 1. 创建用户(或修改密码)
CREATE USER IF NOT EXISTS 'HQ'@'%' IDENTIFIED BY '@Lhq123456';
-- 如果用户已存在,改用:
-- ALTER USER 'HQ'@'%' IDENTIFIED BY '@Lhq123456';-- 2. 授予权限
GRANT SELECT ON Test.* TO 'HQ'@'%';
FLUSH PRIVILEGES;
  • ‘用户名’@‘登录地址’:表示给哪一个用户授权。
  • 库名.对象名:表示要授予用户哪个数据库下的哪个对象的权限。
  • 权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开。
  • IDENTIFIED BY ‘密码’:创建用户的同时也要设置一个密码

  比如下面创建用户 HQ ,并授予用户在 Test 数据库下所有对象的 select 权限
在这里插入图片描述

  授权后通过 show grants for ‘用户名’@‘登录地址’ 命令,可以查看该用户现有的权限

在这里插入图片描述

  • 创建用户后该用户默认会有 USAGE 权限,该权限只能用于数据库登录,不能执行任何操作。
  • *.*表示所有数据库的所有对象,库名.*表示某个数据库的所有对象(表、视图、存储过程等)

  进入 Test 数据库后,也能查看其中的所有表

在这里插入图片描述
  但该用户目前只能查看表中的信息,而不能对表中的数据进行修改,因为我们只授予了该用户 select 权限。如下

在这里插入图片描述

  下面将 Test 数据库下的所有权限都授予该用户

在这里插入图片描述

  这时该用户才可以对表中的数据进行其他操作

在这里插入图片描述

回收权限

  回收权限的SQL如下:

REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';
  • 回收权限的语法与授权一样,只不过将 to 关键字改为了 from

比如下面将用户 HQ 在 Test 数据库下的所有权限回收

在这里插入图片描述

  但是回收用户在某一数据库下的权限后,在该用户下一次进入该数据库时才会起作用,如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。


总结

  怎么样,这篇也不难吧,但是更令人振奋的是马上就要迎来 MySQL 的尾声了,至少我接下来很大一段时间不会再更新 MySQL 专栏了

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

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

相关文章

react19相关问题和解答

目录 1. react19将ref放在了props中(不再需要 forwardRef),那么是不是可以通过ref获取子组件的全部变量了? 我的子组件的useImperativeHandle还需要定义吗? 1.1. ref 在 props 中的本质变化 1.2. 为什么不能访问全部变量? 2. In HTML,cannot be a descendant of. Thi…

Code Composer Studio:CCS 设置代码折叠

Code Composer Studio:设置代码折叠,可以按函数,if, 等把代码折叠起来。1.2.开启折叠选项3.开启后,如果文件已经打开,要关掉重新打开文件就可以开到折叠功能生效。

JMeter groovy 编译成.jar 文件

groovy 编译 一、windows 下手动安装Groovy 下载 Groovy 二进制包 前往官网:https://groovy.apache.org/download.html 下载 Binary release( https://groovy.jfrog.io/ui/native/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.27.zip &#xf…

使用maven-shade-plugin解决依赖版本冲突

项目里引入多个版本依赖时,最后只会使用其中一个,一般可以通过排除不使用的依赖处理,但是如果需要同时使用多个版本,可以使用maven-shade-plugin解决。以最典型的poi为例,poi版本兼容性很低,如果出现找不到…

[CH582M入门第十一步]DS18B20驱动

学习目标: 1、介绍DS18B20 2、学习单总线 3、学习DS18B20程序驱动一、DS18B20介绍 DS18B20 是一款由 Maxim Integrated(原Dallas Semiconductor) 推出的 数字温度传感器,以其单总线(1-Wire)通信协议、高精度和广泛应用而闻名。以下是其核心特点和应用介绍: 主要特性 数…

SGLang + 分布式推理部署DeepSeek671B满血版

部署设备:28A100 80G,两台机器,每台机器8张A100。 模型:deepseek-671B-int8 模型下载地址:https://huggingface.co/meituan/DeepSeek-R1-Block-INT8 模型参考: 1、SGLang Docker部署 github地址&#…

PCL 间接平差拟合球

目录 一、算法原理 1、计算流程 2、参考文献 二、代码实现 三、结果展示 本文由CSDN点云侠原创,首发于2025年7月24日。博客长期更新,本文最新更新时间为:2025年7月24日。 一、算法原理 1、计算流程 空间球方程: ( x − a ) 2 + ( y − b ) 2 + ( z − c ) 2 = R 2 (1) (…

基于 HAProxy 搭建 EMQ X 集群

负载均衡器(LB)负责分发设备的 MQTT 连接与消息到 EMQ X 集群,采用 LB 可以提高 EMQ X 集群可用性、实现负载平衡以及动态扩容。 HAProxy简介 HAProxy 是一款高性能的 开源负载均衡器 和 反向代理服务器,主要用于在多个服务器之…

RISC-V基金会Datacenter SIG月会圆满举办,探讨RAS、PMU性能分析实践和经验

一直以来,龙蜥社区在 RISC-V 生态建设中持续投入,并积极贡献上游社区。多位龙蜥社区成员在 RISC-V 国际基金会担任主席/副主席角色,与来自阿里云、阿里达摩院、中兴通讯、浪潮信息、中科院软件所、字节跳动、Google、 MIT、Akeana 等企业的专…

CloudComPy使用PyInstaller打包后报错解决方案

情况描述 笔者在spec文件中,datas变量设置如下。如果你的报错类似于“找不到cloudComPy”,先尝试如下的设置。 datas[(CloudCompare,cloudComPy)], 笔者在打包完成后,打开软件发现报错: from cloudComPy import* ModuleNotFoun…

node.js中的path模块

在 Node.js 中,path 模块提供了处理和操作文件路径的功能,其中 path.join 和 path.resolve 是两个常用的方法。它们在处理路径时有不同的行为和用途: 功能概述 path.join(): 该方法主要用于将多个路径片段拼接成一个完整的路径字符串。它会正…

将Scrapy项目容器化:Docker镜像构建的工程实践

引言:爬虫容器化的战略意义在云原生与微服务架构主导的时代,​​容器化技术​​已成为爬虫项目交付的黄金标准。据2023年分布式系统调查报告显示:92%的生产爬虫系统采用容器化部署容器化使爬虫环境配置时间​​减少87%​​Docker化爬虫的故障…

Unity × RTMP × 头显设备:打造沉浸式工业远控视频系统的完整方案

结合工业现场需求,探索如何通过大牛直播SDK打造可在 Pico、Quest 等头显设备中运行的 RTMP 低延迟播放器,助力构建沉浸式远程操控系统。 一、背景:沉浸式远程操控的新趋势 随着工业自动化、5G 专网、XR 技术的发展,远程操控正在从…

HTTPS如何保障安全?详解证书体系与加密通信流程

HTTP协议本身是明文传输的,安全性较低,因此现代互联网普遍采用 HTTPS(HTTP over TLS/SSL) 来实现加密通信。HTTPS的核心是 TLS/SSL证书体系 和 加密通信流程。一、HTTPS 证书体系HTTPS依赖 公钥基础设施(PKI, Public K…

数据的评估与清洗篇---清洗数据

处理前的准备 检查索引与列名 在处理内容之前,需要先看看索引或列名是否有意义,若索引和列名都是乱七八糟的,应该对他们进行重命名或者重新排序,以便我们理解数据。 清洗数据 清洗数据原则 针对数据内容,一般先解决结构性问题,再处理内容性问题。整洁数据的特点是: …

Ubuntu apt和apt-get的区别

好的,这是一个非常经典且重要的问题。apt install 和 apt-get install 的区别是很多 Ubuntu/Debian 新手都会遇到的困惑。 简单来说,它们的功能非常相似,但设计目标和用户体验不同。 一句话总结 apt 是 apt-get 的一个更新、更友好、更现代化…

多端适配灾难现场:可视化界面在PC/平板/大屏端的响应式布局实战

摘要精心设计的可视化大屏,在平板上显示时图表挤成一团,在PC端操作按钮小到难以点击,某企业的可视化项目曾因多端适配失败沦为“灾难现场”,不仅用户差评如潮,还被竞争对手嘲讽技术落后。多端适配真的只能靠“反复试错…

Vulnhub Web-Machine-N7靶机攻略(附VB安装教程)

1.VB安装 安装地址:https://download.virtualbox.org/virtualbox/7.1.12/VirtualBox-7.1.12-169651-Win.exe 下载好后直接打开即可开始安装。安装前先打开任务管理器(搜索框直接搜索即可)查看性能里面的虚拟化是否打开。 开始安装。 这里显…

vite搭建react-ts项目,@别名配置

vite搭建react-ts项目,别名配置一、配置别名二、输入/能索引文件三、解决找不到模块“/pages/home”或其相应的类型声明一、配置别名 vite.config.ts文件 import { defineConfig, loadEnv, type ConfigEnv, type UserConfig } from "vite"; import reac…

AWS OpenSearch 搜索排序常见用法

背景介绍 AWS OpenSearch是AWS的一个检索分析服务&#xff0c;是基于开源的Elasticsearch 7.x分支fork出来的独立的一个代码仓库&#xff0c;做了独立的维护&#xff0c;加入了一些自己的优化&#xff0c;本文在这里主要介绍是常见的基础用法 引入相关依赖<dependency>&l…