【MySQL】用户管理——用户、用户信息、创建用户、删除用户、修改用户密码、数据库的权限、给用户权限、回收权限

文章目录

  • MySQL
    • 1. 用户管理
      • 1.1 用户
        • 1.1.1 用户信息
        • 1.1.2 创建用户
        • 1.1.3 删除用户
        • 1.1.4 修改用户密码
      • 1.2 数据库的权限
        • 1.2.1 给用户权限
        • 1.2.2 回收权限

MySQL

在这里插入图片描述

  

1. 用户管理

  为什么MySQL要引入用户管理?

  如果我们只能使用root用户,这样存在安全隐患。因为root 用户拥有最高权限,一旦其账号密码被泄露或被攻击者获取,整个数据库将面临巨大风险,而且 root 用户权限过大,在日常操作中可能会因为误操作而引发严重问题。

  为了降低这些风险,保障数据库的安全和稳定,就需要使用MySQL的用户管理。

  

在这里插入图片描述

  MySQL用户管理是什么?

  MySQL 用户管理 是对 MySQL 数据库中用户账号的创建、配置、修改和删除等操作的综合管理。

  

  通过使用MySQL用户管理我们可以很好的保障数据安全,提高系统稳定性,满足合规要求,优化资源分配,责任追溯,提升用户体验。

  

1.1 用户

1.1.1 用户信息

  MySQL中的用户,都存储在系统数据库mysql的user表中:
  

mysql> use mysql;
Database changedmysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+                          |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+-----------+------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)
--可以通过desc user初步查看一下表结构

  
字段解释:

  host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆

  user: 用户名

  authentication_string: 用户密码通过password函数加密后的

  *_priv: 用户拥有的权限

  

1.1.2 创建用户

  语法:create user '用户名'@'登陆主机/ip' identified by '密码';

案例:

mysql> create user 'clover'@'localhost' identified by 'clover123';
Query OK, 0 rows affected (0.06 sec)mysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | clover           | *664D2BC607BAA85C7DCA8E655CAB8BCE97951607                              |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+-----------+------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)-- 此时便可以使用新账号新密码进行登陆啦
--备注:可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
-- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements-- 解决方案:https://blog.csdn.net/zhanaolu4821/article/details/93622812
--查看密码设置相关要求:SHOW VARIABLES LIKE 'validate_password%';
--关于新增用户这里,需要大家注意,不要轻易添加一个可以从任意地方登陆的user。

  

1.1.3 删除用户

  语法:drop user '用户名'@'主机名'

示例:

mysql> select host,user,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| host      | user             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | clover           | *664D2BC607BAA85C7DCA8E655CAB8BCE97951607                              |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+-----------+------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)mysql> drop user clover;
ERROR 1396 (HY000): Operation DROP USER failed for 'clover'@'%'
--直接给个用户名,不能删除,它默认是%,表示所有地方可以登陆的用户mysql> drop user 'clover'@'localhost'; --删除用户
Query OK, 0 rows affected (0.00 sec)mysql> select user,host,authentication_string from user;
+------------------+-----------+------------------------------------------------------------------------+
| user             | host      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+------------------+-----------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

  

1.1.4 修改用户密码

  语法:

  自己改自己密码:set password=password('新的密码');

  root用户修改指定用户的密码:set password for '用户名'@'主机名'=password('新的密码')

  上面适用于MySQL较低的版本,MySQL 8.0 及更高版本中使用这个:alter user 'clover'@'localhost' identified by '123456';

  

mysql>  create user 'clover'@'localhost' identified by 'clover';
Query OK, 0 rows affected (0.01 sec)mysql> select user,host,authentication_string from user;
+------------------+-----------+------------------------------------------------------------------------+
| user             | host      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| clover           | localhost | *93DC66DF002C44E794BD2E91B6A54696D2D7CDB1                              |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+------------------+-----------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)mysql> ALTER USER 'clover'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)mysql> select user,host,authentication_string from user;
+------------------+-----------+------------------------------------------------------------------------+
| user             | host      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| clover           | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | *01A6717B58FF5C7EAFFF6CB7C96F7428EA65FE4C                              |
+------------------+-----------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

  

1.2 数据库的权限

  MySQL数据库提供的权限列表:

在这里插入图片描述

  

1.2.1 给用户权限

  刚创建的用户没有任何权限。需要给用户授权。

  语法: grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

  说明:权限列表,多个权限用逗号分开。

grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限

  . : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

  库. * : 表示某个数据库中的所有数据对象 (表,视图,存储过程等)

  identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。

案例:

--使用root账号
--终端A
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myisam_test        |
| mysql              |
| performance_schema |
| scsc               |
| spj                |
| sys                |
| t                  |
| test               |
| test4              |
+--------------------+
10 rows in set (0.00 sec)mysql> use test;
Database changedmysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sales          |
| user1          |
+----------------+
2 rows in set (0.00 sec)--给用户clover赋予test数据库下所有文件的select权限
mysql> grant select on test.* to 'clover'@'localhost';
Query OK, 0 rows affected (0.01 sec)--使用clover账号
--终端B
C:\Users\huawei>mysql -u clover -p123456mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)--暂停等root用户给clover赋完权之后,在查看
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| test               |
+--------------------+
3 rows in set (0.00 sec)mysql> use test;
Database changedmysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| sales          |
| user1          |
+----------------+
2 rows in set (0.00 sec)mysql> select * from sales;
+--------+
| amount |
+--------+
|    100 |
|    200 |
|   NULL |
|    300 |
|   NULL |
+--------+
5 rows in set (0.00 sec)--没有删除权限
mysql> delete from sales;
ERROR 1142 (42000): DELETE command denied to user 'clover'@'localhost' for table 'sales'--备注:特定用户现有查看权限
mysql> show grants for 'clover'@'localhost';
+--------------------------------------------------+
| Grants for clover@localhost                      |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `clover`@`localhost`       |
| GRANT SELECT ON `test`.* TO `clover`@`localhost` |
+--------------------------------------------------+
2 rows in set (0.00 sec)mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

  注意:如果发现赋权限后,没有生效,执行如下指令:flush privileges;

  

1.2.2 回收权限

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

示例:

-- 回收clover对test数据库的所有权限
--root身份,终端A
mysql> revoke all on test.* from 'clover'@'localhost';
Query OK, 0 rows affected (0.01 sec)--clover身份,终端B
C:\Users\huawei>mysql -u clover -p123456-- 修改前
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| test               |
+--------------------+
3 rows in set (0.00 sec)-- 修改后
mysql>  show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.00 sec)

          

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

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

相关文章

[C++][opencv]基于opencv实现photoshop算法可选颜色调整

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 SelectiveColor.hpp #ifndef OPENCV2_PS_SELECTIVECOLOR_HPP_ #define OPENCV2_PS_SELECTIVECOLOR_HPP_#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "…

Mariadb数据库本机无密码登录的问题解决

Mariadb数据库本机无密码登录的问题解决 安装了mariadb后,发现Mariadb本机无密码才能登录 百度了很多文章,发现很多人是因为root的plugin设置的值不正确导致的,unix_socket可以不需要密码,mysql_native_password 是正常的。 解…

NLP_情感分类_预训练加微调方案

文章目录 项目背景代码导包一些模型以及训练的参数设置定义dataset定义模型读取数据声明训练及测试数据集将定义模型实例化打印模型结构模型训练测试集效果 同类型项目 项目背景 项目的目的,是为了对情感评论数据集进行预测打标。在训练之前,需要对数据…

Datawhale X 魔搭 AI夏令营 第四期魔搭-AIGC文生图方向Task2笔记

了解一下 AI生图技术 的能力&局限 对所有人来说,定期关注AI生图的最新能力情况都十分重要: 对于普通人来说,可以避免被常见的AI生图场景欺骗,偶尔也可以通过相关工具绘图 对于创作者来说,通过AI生图的工具可以快速…

全球 30 万台游戏服务器的 PlayFlow Cloud 如何通过 DigitalOcean 实现动态扩展

“我在 DigitalOcean 上首次接触了 Kubernetes。设置 Kubernetes 集群非常简单,使我能够轻松自动化扩展我们的游戏服务器。”——Haseeb Sheikh,PlayFlow Cloud 创始人兼首席执行官 PlayFlow Cloud 是由 Haseeb Sheikh 创立的,旨在通过简化游…

13 Listbox 组件

13 Listbox 组件 Tkinter 的 Listbox 组件是一个用于显示列表项的控件,用户可以从中选择一个或多个项目。以下是对 Listbox 组件的详细说明和一个使用案例。 Listbox 组件属性 基本属性 width: 控件的宽度,通常以字符数为单位。height: 控件的高度&a…

Docker 网络代理配置及防火墙设置指南

Docker 网络代理配置及防火墙设置指南 背景 在某些环境中,服务器无法直接访问外网,需要通过网络代理进行连接。虽然我们通常会在 /etc/environment 或 /etc/profile 等系统配置文件中直接配置代理,但 Docker 命令无法使用这些配置。例如&am…

Midjourney提示词——《环太平洋》机甲专场(附公式)

前言 本篇为大家带来《环太平洋》的机甲提示词,文末附公式,有需要的可以直接复制点击下方阅读原文尝试使用哦~ 1、危险流浪者 Gypsy Danger, standing tall and heroic, dramatic lighting highlighting the metal plates, deep blue and silver color…

[图解]需要≠需求-《分析模式》漫谈

1 00:00:00,760 --> 00:00:02,910 今天的《分析模式》漫谈 2 00:00:02,920 --> 00:00:04,180 我们来说一下 3 00:00:04,490 --> 00:00:06,490 需要不等于需求 4 00:00:10,490 --> 00:00:11,760 还是第一章 5 00:00:13,120 --> 00:00:15,020 这里 6 00:00:1…

双胞胎命名有哪些特别之处?如何体现两者之间的联系与区别?

双胞胎命名艺术探秘 问题: 双胞胎命名有哪些特别之处?如何体现两者之间的联系与区别? 起尔网-免费取名|大师起名|宝宝起名|新生儿取名|男孩女孩在线起名姓名测试评分网起尔网-免费在线宝宝起名|新生儿取名|男孩女孩在线起名网,龙…

数据结构(学习)2024.8.6(顺序表)

今天开始学习数据结构的相关知识,大概分为了解数据结构、算法;学习线性表:顺序表、链表、栈、队列的相关知识和树:二叉树、遍历、创建,查询方法、排序方式等。 目录 一、数据结构 数据 逻辑结构 1.线性结构 2.树…

Ubuntu20.04 源码安装 OMPL 与 Moveit

文章目录 一、源码安装OMPL1.1 先检查是否已安装二进制 ompl1.2 若已经提前安装二进制,需先行卸载1.3 OMPL官网安装教程 二、源码安装 moveit2.1 先检查是否已安装二进制Moveit2.2 源码安装 Moveit2.2.1、更新软件包2.2.2、安装依赖2.2.3、创建Moveit工作空间2.2.4…

<Qt> 系统 - 文件

目录 一、Qt文件概述 二、输入输出设备类 三、文件读写类 四、文件和目录信息类 一、Qt文件概述 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操…

Openlayers6 图形绘制和修改功能(结合React)

Openlayers常用的API了解的差不多了,就开始进入实战了,首先从绘制基本的图形开始,这里主要介绍一下绘制圆形、矩形和多边形。 通过使用openlayers的ol.interaction.Draw和ol.interaction.Modify模块实现地图上绘制圆形、矩形、多边形并修改编…

mesh格式转换:glb转ply——使用Blender烘焙贴图到顶点色

1. 导入glb文件 选择shading后,选中物体,就能看到下面的节点树。 2. 创建顶点颜色 这个时候我们可以看到模型的顶点颜色是纯白色的。 2. 将贴图付给材质 原来: 现在: 3. 切换渲染器并烘焙顶点颜色 第三行选择CPU渲染或者GPU…

论文阅读:一种基于凸规划的高效有向最密子图发现方法 | SIGMOD 2022

论文概述 这篇论文的主题是研究如何在有向图中找到密度最高的子图,这个问题被称为有向最密子图(Directed Densest Subgraph, DDS)问题。该问题在许多应用中非常重要,如社交网络分析、社区发现、假粉丝检测等。论文提出了一种基于…

AI for reading ML paper

心流 心流 Kimi Kimi Humata Humata Bytez Bytez Chatgpt4 scholar 学术版chatgpt4,需要充值; 还有更多AI工具等待你发现;

sqlserver清理数据库日志并写作业定期执行

清理数据库日志最终sql: USE [master] GO ALTER DATABASE lsrz_zjwb_w SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE lsrz_zjwb_w SET RECOVERY SIMPLE --简单模式 GO USE lsrz_zjwb_w GO DBCC SHRINKFILE (Nlsrz_zjwb_log , 2, TRUNCATEONLY) --日志文件…

【网络】IO

IO 一、五种IO模型同步通信 vs 异步通信阻塞 vs 非阻塞 二、其他高级IO非阻塞IOSetNoBlockI/O多路转接之selectselect函数原型fd_set(位图)select代码select缺点poll(用select修改) I/O多路转接之epoll高级版改进select和poll的问…

企业如何组建安全稳定的跨国通信网络

当企业在海外设有分公司时,如何建立一个安全且稳定的跨国通信网络是一个关键问题。为了确保跨国通信的安全和稳定性,可以考虑以下几种方案。 首先,可以在分公司之间搭建虚拟专用网络。虚拟专用网络通过对传输数据进行加密,保护通信…