【数据库】 mysql用户授权详解

news2024/11/18 22:47:16

目录

MySQL用户授权

一,密码策略

1,查看临时密码

2,查看数据库当前密码策略:

二, 用户授权和撤销授权

1、创建用户

2,删除用户

3,授权和回收权限


MySQL用户授权

一,密码策略

mysql刚安装时,临时密码会存储在 /var/log/mysqld.log

1,查看临时密码

方法一:直接给出密码

[root@localhost ~]# awk '/temporary password/ {print $NF}' /var/log/mysqld.log

*2D):irrJ_!_

 

方法二:查到的语句的最后为密码

[root@localhost ~]# grep 'password' /var/log/mysqld.log

2023-02-07T13:07:17.842453Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: *2D):irrJ_!_

 

 

 

2,查看数据库当前密码策略:

mysql8.0.30 [(none)]>show VARIABLES like"%password%";

二, 用户授权和撤销授权

MySql8有新的安全要求,不能像之前的版本那样一次性创建用户并授权。需要先创建用户,再进行授权操作。

mysql8.0.30 [(none)]>grant all privileges on *.* to 'xiaoming'@'%';

ERROR 1410 (42000): You are not allowed to create a user with GRANT

 

1、创建用户

创建新用户,语法:create user 'username'@'host' identified by 'password';

说明:username为自定义的用户名,host为客户端的域名或者IP,如果host为'%'时表示为任意IP,password为密码。

(1)创建一个用户名为xiaoming,客户端的ip为任意,密码为Guest123!的新用户

mysql8.0.30 [(none)]>create user xiaoming@'%' identified by 'Guest123!';

Query OK, 0 rows affected (0.01 sec)

(2)查看刚创建的的用户信息

mysql8.0.30 [(none)]>select user,host from mysql.user;

+------------------+-----------+

| user             | host      |

+------------------+-----------+

| root             | %         |

| xiaoming         | %         |

| mysql.infoschema | localhost |

| mysql.session    | localhost |

| mysql.sys        | localhost |

+------------------+-----------+

5 rows in set (0.00 sec)

(3)使用xiaoming用户登录一下数据库:

[root@localhost ~]# mysql -uxiaoming -p'Guest123!';

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 12

Server version: 8.0.32 MySQL Community Server - GPL



Copyright (c) 2000, 2023, Oracle and/or its affiliates.



Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(4)使用xiaoming用户查看所有的数据库:

mysql8.0.30 [(none)]>show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| performance_schema |

+--------------------+

2 rows in set (0.01 sec)

 

(5)也可以在windows端登录xiaoming用户:

 

 

 

 

 

2,删除用户

(1)删除用户名为xiaoming,客户端的ip为任意,密码为Guest123!的用户

mysql8.0.30 [(none)]>drop user xiaoming@'%';

Query OK, 0 rows affected (0.01 sec)

(2)删除后的user表中已经没了xiaoming的信息

mysql8.0.30 [(none)]>select user,host from mysql.user;

+------------------+-----------+

| user             | host      |

+------------------+-----------+

| root             | %         |

| mysql.infoschema | localhost |

| mysql.session    | localhost |

| mysql.sys        | localhost |

+------------------+-----------+

4 rows in set (0.00 sec)

  

注意,如果删除用户时显示如下提示:

mysql8.0[mysql]>drop user xiaoming;

ERROR 1227(42000): Access denied; you need (atleast oneof) the SYSTEM_USER privilege(s) forthis operation

需要执行该语句:

【mysql8.0 [(none)]>grant  system_user  on *.*  to  root@'%';】

3,授权和回收权限

 

授予权限的原则:

(1)只授予能满足需要的最小权限 ,防止用户干坏事。比如用户只是需要查

          询,那就只给 select 权限就可以了,不要给用户赋予update 、 insert 或

           者 delete 权限

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

           IP 段。

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

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

 

授权语法:grant 权限列表 on 库名.表名 to 用户名@'主机' [with GRANT option];

没有with GRANT option,被授权者无法授权于下一个人用户

mysql用户常用权限列表

说明

all 或者all privileges

授予用户所有权限

create

授予用户创建新数据库和表的权限

drop

授予用户删除数据库和表的权限

delete

授予用户删除表中的行的权限

alter

授予用户修改表结构的权限

insert

授予用户在表中插入行(add)的权限

select

授予用户运行select命令以从表中读取数据的权限

update

授予用户更新表中的数据的权限

查看授予用户的权限的四种方法:

(1) 查看root用户的权限(方法一)

mysql8.0.30 [(none)]>show grants;

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Grants for root@%                                                                                                                                                                                                                                                                                                                                                                                |

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION |

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

(2)查看xiaoming用户的权限(方法二)

mysql8.0.30 [(none)]>show grants for xiaoming@'%';

+--------------------------------------+

| Grants for xiaoming@%                |

+--------------------------------------+

| GRANT USAGE ON *.* TO `xiaoming`@`%` |

+--------------------------------------+

1 row in set (0.00 sec)


(3)mysql8.0[mysql]>select* from mysql.user;(方法三)

(4)方法四:

授权操作

不具有授予下一个人权限的权利的授权

(1)此时,xiaoming用户可以访问以下两个数据库,须授予其他数据库的访问权限,才能对其

         它数据库进行操作

mysql8.0.30 [(none)]>show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| performance_schema |

+--------------------+

2 rows in set (0.01 sec)

 

 

 

(2)给xiaoming用户授予所有权限

*.*中第一个*表示所有数据库,第二个*表示所有数据表

mysql8.0.30 [(none)]>grant all privileges on *.* to xiaoming@'%';

Query OK, 0 rows affected (0.01 sec)

(3)此时xiaoming用户拥有和root用户一样的权限,可以访问其它数据库的权限

mysql8.0.30 [(none)]>show databases;

+--------------------+

| Database           |

+--------------------+

| chap03             |

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.00 sec)


(4)此时的xiaoming用户没有赋予下一个人权限的权利

mysql8.0.30 [(none)]>grant all privileges on *.* to xiaohei@'%';

ERROR 1045 (28000): Access denied for user 'xiaoming'@'%' (using password: YES)

mysql8.0.30 [(none)]>

具有授予下一个人权限的权利的授权

(1)重新授予xiaoming用户授予其他用户权限的权利

mysql8.0.30 [(none)]>grant all privileges on *.* to xiaoming@'%' with GRANT option;

Query OK, 0 rows affected (0.00 sec)

(2)使用xiaoming用户为xiaohei 用户授权

mysql8.0.30 [(none)]>grant all privileges on *.* to xiaohei@'%';

Query OK, 0 rows affected (0.01 sec)

(3)此时xiaohei用户拥有访问所有数据库的权利

mysql8.0.30 [(none)]>select user();       (查看当前的用户)

+-------------------+

| user()            |

+-------------------+

| xiaohei@localhost |

+-------------------+

1 row in set (0.00 sec)



mysql8.0.30 [(none)]>show databases;     (此用户可以访问以下数据库的权利)

+--------------------+

| Database           |

+--------------------+

| chap03             |

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.00 sec)

收回权限

收回权限(不包含赋权权限)

REVOKE ALL PRIVILEGES ON *.* FROM username;

收回赋权权限

REVOKE GRANT OPTION ON *.* FROM username;

收回赋权权限

(1)收回xiaoming用户授予其他用户权限的权利

mysql8.0.30 [(none)]>revoke grant option on *.* from xiaoming;

Query OK, 0 rows affected (0.00 sec)

(2)此时,xiaoming用户不在拥有授予其他用户的权限

mysql8.0.30 [(none)]>grant all privileges on *.* to xiaohei@'%';

ERROR 1045 (28000): Access denied for user 'xiaoming'@'%' (using password: YES)

mysql8.0.30 [(none)]>

收回权限(不包含赋权权限)

(1)收回xiaoming用户的所有权限

mysql8.0.30 [(none)]>revoke all privileges on *.* from xiaoming@'%';

Query OK, 0 rows affected (0.00 sec)

(2)此时xiaoming用户不在拥有访问其它数据库的权限

mysql8.0.30 [(none)]>show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| performance_schema |

+--------------------+

2 rows in set (0.00 sec)

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

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

相关文章

Https 协议超强讲解(一)

都说Https协议非常安全,那为什么还是会被抓包呢?抓包后会影响什么吗? HTTPS协议 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关…

ChatGPT vscode中文插件

方式一和方式二只需要做一个就行 方式一:直接购买账号,购买渠道请自行寻找。 快捷键打开命令面板(ctrlshiftp 或者 commandshiftp) 输入 ChatGPT 然后选择 ChatGPT: 切换成国内/国外模式(将会重启VSCode) 命令来切换到国外模式此时会弹出一个输入框&am…

12.hadoop系列之MapReduce分区实践

本文我们学习MapReduce默认分区以及自定义分区实践 当我们要求将统计结果按照条件输出到不同文件(分区)&#xff0c;比如按照统计结果将手机归属地不同省份输出到不同文件中(分区) 1.默认Partitioner分区 public class HashPartitioner<K, V> extends Partitioner<…

ChatGPT已接入微软必应Bing搜索?如何进入新必应候补名单抢先体验

文章目录1. 前提2. 开始申请3. 直接使用ChatGPT1. 前提 Edge浏览器微软账号科学上网工具 2. 开始申请 进入新必应网址&#xff1a;https://www.bing.com/new&#xff0c;点击加入等待列表。 此时会弹出微软的登录界面&#xff0c;登录自己的微软账号即可&#xff0c;建议使用…

【C++/QT】QT5.6解析Excel教程(qtxlsx)

这里写目录标题【背景】【下载qtxlsx】【安装perl】【编译qtxlsx】【添加模块】【使用qtxlsx】【背景】 新接触QT&#xff0c;很多东西都不会&#xff0c;刚接触一个解析Excel的demo&#xff0c;记录一下安装、编译、解析Excel的过程 【下载qtxlsx】 在解析之前&#xff0c;…

多传感器融合定位十-基于滤波的融合方法Ⅰ其二

多传感器融合定位十-基于滤波的融合方法Ⅰ其二3. 滤波器基本原理3.1 状态估计模型3.2 贝叶斯滤波3.3 卡尔曼滤波(KF)推导3.4 扩展卡尔曼滤波(EKF)推导3.5 迭代扩展卡尔曼滤波(IEKF)推导4. 基于滤波器的融合4.1 状态方程4.2 观测方程4.3 构建滤波器4.4 Kalman 滤波实际使用流程4…

【Python学习笔记】25.Python3 输入和输出(1)

前言 在前面几个章节中&#xff0c;我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法&#xff0c;标准输出文件可以用…

Linux手工创建新用户

准备工作&#xff08;配置流程的理解&#xff09; Linux中useradd命令即一系列文件操作的结合体&#xff0c;所以我们可以通过查看useradd命令来确认我们手工创建新用户需要完成的文件配置 找到man useradd中涉及的文件部分 对于手工创建用户有用的文件&#xff1a; /etc/pas…

jvm学习的核心(五)---垃圾回收算法和常见垃圾回收器

文章目录1.垃圾回收算法**1.1. 标记阶段****1.2. 清除阶段**1.2.1.标记清除算法1.2.2.标记复制算法1.2.3.标记整理算法1.3.引用2.常见的垃圾回收器2.1.Serial回收器2.2.ParNew回收器2.3.Parallel回收器2.4.CMS回收器<font color red>2.5.G1垃圾回收器ZGC回收器&#xff…

2月面经:真可惜...拿了小米的offer,字节却惨挂在三面

我是2月份参加字节跳动和华为的面试的&#xff0c;虽然我只拿下了小米的offer&#xff0c;但是我自己也满足了&#xff0c;想把经验分享出来&#xff0c;进而帮助更多跟我一样想进大厂的同行朋友们&#xff0c;希望大家可以拿到理想offer。 自我介绍 我是16年从南京工业大学毕…

java ssm idea高校图书借阅管理系统设计2z87z

本论文是以构建高校图书管理系统设计为目标&#xff0c;使用 jsp制作&#xff0c;由前台用户图书借阅、后台管理员图书分类两大部分组成。着重论述了系统设计分析&#xff0c;系统的实现&#xff08;用户注册模块&#xff0c;用户登录&#xff0c;用户图书借阅模块&#xff0c;…

ONNXRUNTUIME c++使用与相关资料(暂记)

下面的教程是在linux系统上运行的&#xff0c;如果想在windows系统上运行&#xff0c;可以看官方链接或中文教程https://bbs.huaweicloud.com/blogs/335706&#xff0c;官方链接中有完整的VS的带.sln的项目。 ONNXRUNTUIME OPENCV不支持某些算子(挤压层在opencv 中不支持) 安…

开关电源环路稳定性分析(10)——OPA和OTA型补偿器传递函数

大家好&#xff0c;这里是大话硬件。 在前面9讲的内容中将开关电源环路分析进行了梳理&#xff0c;我相信很多人即使都看完了&#xff0c;应该还是不会设计&#xff0c;而且还存在几个疑问。比如我随便举几个&#xff1a; 开关电源的带宽怎么设定&#xff1f;开关电源精度和什…

IDEA下java程序的调试(简易实例图示版)

在线排版不太好看&#xff0c;介意的读者可下载word下来看&#xff1a;https://download.csdn.net/download/xijinno1/87441301IDEA下java程序的简单调试-System.out.println首先本次进行调试的一个程序是实现从1累加到100的功能&#xff0c;是在IDEA下进行编写的。如图所示&am…

1626_MIT 6.828 lab1课程大纲学习过程整理

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 现在lab1的内容全都学习完了&#xff0c;该做的练习也都做了。接下来&#xff0c;整理一下自己看这一部分课程讲义的一些笔记。 整理之前&#xff0c;先把自己完成…

c# 跑马灯显示

//本文演示跑马灯//用到了线程、同步委托using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.IO;nam…

鲜花数据集实验结果总结

从read_split_data中得到&#xff1a;训练数据集&#xff0c;验证数据集&#xff0c;训练标签&#xff0c;验证标签。的所有的具体详细路径 数据集位置&#xff1a;https://download.csdn.net/download/guoguozgw/87437634 import os #一种轻量级的数据交换格式&#xff0c; …

常见漏洞之 struts2+ jboss

数据来源 本文仅用于信息安全的学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若观众因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与本人无关。 01 Struts2相关介绍 》Struts2概述 》Struts2历史漏洞&#xff08;1&#xff09; 》…

【Linux】Linux多线程(下)

前言 大家好呀,欢迎来到我的Linux学习笔记~ 本篇承上Linux多线程创建,线程互斥(互斥锁),线程同步(条件变量),继下接着学习线程同步的另一个信号量,以及后序的线程池&#xff0c;线程的懒汉单例模式和其他锁相关知识。&#xff08;注意本篇博客代码居多&#xff09; Linux多线程…

C++005-C++选择与分支2

文章目录C005-C选择与分支2条件语句C实现else if 语句题目描述 根据成绩输出成绩等级ABCDEif嵌套语句题目描述 输出三个数中的最大值题目描述 模拟游戏登录switch语句三元运算符题目描述 输出三个数中的最大值-基于3元运算符题目描述 根据1-7输出星期1-星期日案例练习题目描述 …