[MySQL]MySQL用户管理

[MySQL]MySQL用户管理

文章目录

  • [MySQL]MySQL用户管理
    • 1. 用户的概念
    • 2. 用户信息
    • 3. 创建用户
    • 4. 修改用户密码
    • 5. 删除用户
    • 6. MySQL中的权限
    • 7. 给用户授权
    • 8. 回收权限

1. 用户的概念

  • MySQL中的用户分为超级用户(root)和普通用户。
  • 超级用户的操作是不受权限的约束的,普通用户的操作是受权限约束的。

用户管理就是对用户信息和用户权限添加、修改、删除。

2. 用户信息

在安装MySQL时会默认生成一个名为mysql的数据库,MySQL中的用户信息,都存储在这个系统数据库mysql的user表中。

  • 由于MySQL将用户信息都存在系统数据库mysql的user表中,因此对用户管理的操作实际上就是对user表进行操作。
  • 可以通过操作user表实现用户管理,但是操作起来比较麻烦。

查看已有数据库:

image-20230722185054166

使用系统数据库mysql并查看数据库中已有的表:

image-20230722170128468

查看user表中的数据:

image-20230722170302729

对user表中的部分字段进行说明:

  • host: 表示这个用户可以从哪个主机登陆,其中localhost表示只能从本机登陆。
  • user: 用户名。
  • authentication_string: 用户密码通过password函数加密后的结果 。
  • *_priv: 用户拥有的权限。

3. 创建用户

创建用户的SQL语句如下:

create user '用户名'@'登陆主机/ip' identified by '密码';
  • 创建用户时必须指明登录主机/ip,其中可以使用 localhost 或本地环回地址(127.0.0.1)来设置成从本地主机登录、使用%设置用户在任何地址都能登录,但是很危险。
  • 设置的密码会被MySQL加密成统一长度的字符数据。

创建用户示例

  • 使用超级用户创建名为qxm的用户,只能在本地主机登录,密码为’123456’:

image-20230722172043777

注: 如果因为在配置文件中设置了root用户为无密码等原因,导致创建用户时报以下错误:

image-20230722172137389

只需要输入flush privileges,再创建用户即可:

image-20230722172324508

  • 创建用户后,刷新权限确保用户一定创建成功:

image-20230722175117142

  • 在本地启动一个客户端登录新创建的qxm用户:

注: 输入密码时是不回显的,在输入密码后按下回车即可。

  • 使用root用户和qxm用户查询已有数据库做对比:

image-20230722185204101

由于普通用户受到权限的约束,因此有的数据普通用户是看不到的,这也是用户权限管理的价值所在。

  • 使用超级用户查看user表中数据:

image-20230722173257686

能看到user表中新增了qxm用户,并且密码是加密后的结果。

4. 修改用户密码

修改用户密码的SQL语句如下:

  • 用户修改自己的用户密码
set password=password('新的密码'); 
  • 超级用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码');

修改用户密码需要调用了MySQL内置的password函数将密码进行加密。

修改用户密码示例

  • 使用超级用户将qxm用户的密码修改为’123’:

image-20230722175538655

  • 刷新权限确保新的密码生效:

image-20230722175612579

5. 删除用户

删除用户的SQL语句如下:

drop user '用户名'@'主机名';
  • 删除用户时主机名不能省略。

删除用户示例

  • 使用超级用户将qxm用户删除:

image-20230722173909880

删除用户后user表中相应的数据也被删除了。

6. MySQL中的权限

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服务器管理

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

7. 给用户授权

给用户授权的SQL语句如下:

grant 权限列表 on 库.表名 to '用户名'@'登陆位置' [identified by '密码'];
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)。
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)。
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

用户授权示例

  • 启动两个客户端,其中一个客户端以超级用户身份的登录并创建数据库testDB,在数据库中创建表user,在另一个客户端中使用新创建的qxm用户登录:

image-20230722185258906

  • 使用show grants for '用户名'@'登录位置'查看qxm用户被授予的权限:

image-20230722185314167

usage权限是没有权限的意思。

  • 以qxm用户身份查看已有数据库:

image-20230722185713072

由于qxm用户没有权限因此看不到超级用户创建的testDB数据库。

  • 使用超级用户给qxm用户授予对testDB数据库中user表的所有权限:

image-20230722190228877

  • 使用qxm用户查看已有数据库testDB,并对库中的user的数据进行操作:

image-20230722190349247

由于被授权了对于testDB数据库的user表的所有权限,因此qxm用户可以对user表的数据进行增删改查操作。

8. 回收权限

回收权限的SQL语句如下:

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

回收权限示例

  • 使用超级用户将对user表拥有所有权限的qxm用户的select权限回收:

image-20230722191131760

由于select权限被回收了,因此qxm用户的权限列中没有select。

  • 使用qxm对user表的数据进行操作:

image-20230722192316804

由于还有插入权限,因此插入数据是不受限制的,但是由于更新和删除操作都要先查询数据确定要操作的数据因此都被权限限制了。

  • 使用超级用户查看user表的数据:

image-20230722192233384

通过查看表中数据,说明qxm用户的插入数据操作确实成功了。

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

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

相关文章

奇舞周刊第500期:TQL,巧用 CSS 实现动态线条 Loading 动画

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ TQL,巧用 CSS 实现动态线条 Loading 动画 最近,群里有个很有意思的问题,使用 CSS 如何实现如下 Loading 效果: leaferjs&#xff0c…

4.3 Bootstrap CSS编码规范

文章目录 Bootstrap CSS编码规范语法声明顺序不要使用 import媒体查询(Media query)的位置带前缀的属性单行规则声明简写形式的属性声明Less 和 Sass 中的嵌套注释class 命名选择器代码组织编辑器配置 Bootstrap CSS编码规范 语法 用两个空格来代替制表…

Java方法重载和Java方法重写

Java方法重载 Java允许同一个类中定义多个同名方法,只要它们的形参列表不同即可。如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载(overload)。 例如,在 JDK …

【多模态】16、DetCLIP | 构建超大词汇字典来进行开放世界目标检测

论文:DetCLIP: Dictionary-Enriched Visual-Concept Paralleled Pre-training for Open-world Detection 代码:无。。。 出处:NIPS2022 | 华为诺亚方舟 | 中山大学 | 香港科技大学 效果: 在 LVIS 的 1203 个类别上超越了 GLIP…

深入学习 Redis - 深挖经典数据类型之 list

目录 前言 一、list 类型 1.1、操作命令 lpush / rpush(插入元素) lrange(查看范围元素) lpushx / rpushx (有约束的插入) lpop / rpop(头删尾删) lindex(获取下…

实现锂电池形状的数据可视化css+js

1.效果图 2.需求根据后端返回数据改变里面的高度 HTML&#xff1a; <div class"dianchichi"><div class"limian" id"divElementId"></div></div> css: .dianchichi {width: 84px;height: 146px;display: flex;justify-…

【Visual Studio】Qt 在其他 cpp 文件中调用操作 ui 界面控件

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 还整了一个如何相互之间调用函数的文章&#xff0c;感兴趣可以看&#xff1a;【Visual Studio】Qt 在其他 cpp 文件中调用主工程下文件中的函数。 文章目录 …

react 实现小球加入购物车动画

代码 import React, { useRef } from react;const ProductLayout () > {const box useRef(null);const createBall (left, top) > {const ball document.createElement(div);ball.style.position absolute;ball.style.left left - 10 px;ball.style.top top - 1…

四个现实中的商品样例,帮助你理解如何使用css【前端CSS入门样例】

实现商品列表 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>商品列表图片</title><style>.row > img {width: 15%;}</style></head><body><div class"row"><img sr…

C/C++ 程序 IDE 开发工具 CLion

下载地址&#xff1a; https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/ 下载地址&#xff1a; https://www.jetbrains.com/clion/download/ https://www.jetbrains.com/clion/download/ 历史版本&#xff08;老版本&#xff09;下载地址&#xff1a; h…

计算机科学cs/电子信息ei面试准备——python复习|理解题|简答题

目录 1 请简要概述python技术的主要应用场景? 2 python的基本数据类型是那几种? 3 python数组和列表有什么区别? 4 Python中的函数是什么&#xff1f; 5 请写出删除列表中的元素有几种方式? 6 描述python函数中递归的理解? 7 请介绍join()和split()的区别? 8 介绍…

每天五分钟机器学习:多项式非线性回归模型

本文重点 在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线性回…

dpdpdp

这里写目录标题 139. 单词拆分322. 零钱兑换300. 最长递增子序列120. 三角形最小路径和64. 最小路径和63. 不同路径 II5. 最长回文子串&#xff08;回文dp&#xff09;⭐97. 交错字符串⭐&#xff08;抽象成路径问题&#xff09;221. 最大正方形⭐ 139. 单词拆分 class Soluti…

文心千帆为你而来

1. 前言 3月16号百度率先发布了国内第一个人工智能大语言模型—文心一言。文心一言的发布在业界引起了不小的震动。而文心一言的企业服务则由文心千帆大模型平台提供。文心千帆大模型平台是百度智能云打造出来的一站式大模型开发与应用平台&#xff0c;提供包括文心一言在内的…

Observability:Synthetic monitoring - 动手实践

在我之前的如下文章里&#xff1a; Observability&#xff1a;Synthetic monitoring - 合成监测入门&#xff08;一&#xff09;&#xff08;二&#xff09; Observability&#xff1a;Synthetic monitoring - 创建浏览器监测&#xff0c;配置单独的浏览器监测器及项目 我详…

408-2009

一、选择题&#xff08;2 分/题&#xff09; 1.为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据一次写入该缓冲取&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是______。 A.栈 …

【JavaEE】Servlet常用的API

目录 前言 一、HttpServlet类 1、Servlet的生命周期 ✨tomcat的两个端口 ✨设置告诉浏览器使用那种字符集解析响应 ✨Java中Unicode和utf8字符集的使用 二、HttpServletRequest类 1、获取请求的信息 2、 前端给后端传递数据的三种方式 2.1、通过query string传递 2.2…

【云原生】Prometheus 监控系统的初步了解与系统搭建

前言 promethues是一个开源的系统监控和报警系统&#xff0c;现在已经加入到CNCF基金会&#xff0c;成为继k8s之后第二个在CNCF托管的项目&#xff0c;在kubernetes容器管理系统中&#xff0c;通常会搭配prometheus进行监控&#xff0c;同时也支持多种exporter采集数据&#x…

S32K144 GPIO外设分析

1. S32K144 GPIO外设特性 下面的内容来自于S32K用户手册的翻译&#xff0c;或者网上关于S32K系列的一些pdf文件介绍。有些内容可能会出现理解不到位或者翻译错误方面&#xff0c;如果大家有疑问最好可以查阅用户手册。 GPIO和PORT的数量 从用户手册&#xff0c;对于PCR&#x…

【广州华锐互动】列车人员疏散VR虚拟演练系统

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐应用于各个领域。在火车站安全方面&#xff0c;为了提高旅客的安全意识和应对突发事件的能力&#xff0c;列车人员疏散VR虚拟演练系统应运而生。 列车人员疏散VR虚拟演练系统是一种基于虚拟现实技术的教育培训系统&…
最新文章