轻松上手MYSQL:MYSQL权限配置全攻略,打造安全的数据库环境

news2024/12/26 20:44:17

 🌈 个人主页:danci_
🔥 系列专栏:《设计模式》《MYSQL》
💪🏻 制定明确可量化的目标,坚持默默的做事。


✨欢迎加入探索MYSQL权限配置之旅✨
    👋 大家好!文本学习和探索MYSQL权限配置。👋 权限配置是保障数据安全与系统稳定的基石。《MySQL权限配置》将带您深入探索权限管理的奥秘,帮助您轻松掌握用户权限的分配与控制技巧。从基本用户设置到复杂的权限策略,本篇文章将为您提供全面的指导,让您在应对各种安全挑战时游刃有余。无论您是初学者还是资深DBA,这里都有您不可错过的实战经验与最佳实践。准备好让您的数据库更安全了吗?让我们一探究竟!

目录

一、环境

二、MySQL8 用户权限

2.1 账号管理权限

2.1.1 连接数据库

2.1.2 账号权限配置

2.2 密码管理

2.3 锁账号配置(含示例)

三、MySQL8 用户资源限制


一、环境

  • Windows11;
  • Docker (中文下载:Docker中文网 官网,英文下载:Get Started | Docker,安装:一直下一步即可);
  • Mysql5、Mysql8.0.28。
# 下载镜像
$ docker pull mysql:8.0.28

# 创建容器并运行
$ docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST='%' mysql

二、MySQL8 用户权限

        在 MySQL8 之前,授权表使用 MyISAM 并且是非事务性的,而在 MySQL8 中,授权表使用 InnoDB 存储引擎并且是事务性的。通过查看创建表的语句(命令:show create table user;)来查看表的存储引擎,如下图:

        服务器在启动时将授权表的内容读入内存,当修改权限时需要通过命令 FLUSH PRIVILEGES 重新加载使权限生效。

user:用户帐户、静态全局权限表;
global_grants:动态全局权限表;
db:数据库级的权限表;
tables_priv:存储表级权限;
columns_priv: 存储列级权限;
procs_priv: 存储过程和函数权限表;
proxies_priv: 代理用户权限表;
default_roles:默认用户角色表;
role_edges:记录角色与用户的授权关系表;
password_history: 密码更改历史表。

2.1 账号管理权限

2.1.1 连接数据库

docker exec -it mysql3307 bash    // 回车
mysql -uroot -p //回车再输入密码

docker exec -it mysql3307 bash    // 回车
mysql --user=root --password    // 回车,再输入密码

2.1.2 账号权限配置

创建和删除帐户 

CREATE USER 和 DROP USER 创建和删除帐户;

 分配权限和撤销权限

GRANT 和 REVOKE 分配权限和撤销权限;

示例:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';  // 创建局域网络账号
GRANT ALL ON *.* TO 'username'@'localhost' WITH GRANT OPTION; // 分配权限
REVOKE ALL ON *.* FROM 'username'@'localhost';                // 撤销权限
SHOW GRANTS FOR 'username'@'localhost';                       // 查看权限
DROP USER 'username'@'localhost';                             // 删除账号

       其它机器用户访问的用户权限配置只需要修改localhost,如 localhost修改为% 表示任意机器网络,localhost修改为192.168.2.% 表示给192.168.2这个ip连接数据库配的用户权限。

2.2 密码管理

修改密码

ALTER USER 'username'@'%' IDENTIFIED BY 'password';//修改密码

设置密码过期时间

ALTER USER 'username'@'%' PASSWORD EXPIRE;                 //设置立即过期
ALTER USER 'username'@'%' PASSWORD EXPIRE INTERVAL 30 DAY; //设置30天过期
ALTER USER 'username'@'%' PASSWORD EXPIRE NEVER;           //禁用密码过期

禁止重复使用最近3个或超过30天的密码

修改文件 my.cnf,mysql8.0.28是/etc/my.cnf:

[mysqld]
password_history=3
password_reuse_interval=30

2.3 锁账号配置(含示例)

# 连续登录失败3次则锁定1天,天数可取值:0-32767,设置 0 则代表解锁
CREATE USER 'test'@'localhost' IDENTIFIED BY 'test123' FAILED_LOGIN_ATTEMPTS 7 PASSWORD_LOCK_TIME 1;
 
# 连续登录失败3次则永久锁定
ALTER USER 'try8'@'localhost' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME UNBOUNDED;

示例:

# 登陆MYSQL
PS C:\Users\Administrator> docker exec -it mysql8 bash
bash-4.4# mysql -uroot -p
Enter password:                                    # 此外输入密码完成登陆
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.2.0 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.
mysql>
# 登陆连续登陆失败3次锁一天的用户test
mysql> CREATE USER 'test'@'localhost' IDENTIFIED BY 'test123' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;

打开另一终端,用正确密码测试是否登陆成功


PS C:\Users\Administrator> docker exec -it mysql8 bash
bash-4.4# mysql -utest -ptest123
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 9
Server version: 8.2.0 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.
mysql>                                # 进到这里说明登陆成功
mysql> exit
Bye

测试登陆3次失败


bash-4.4# mysql -utest -ptest12345
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
bash-4.4# mysql -utest -ptest12345
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
bash-4.4# mysql -utest -ptest12345
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3955 (HY000): Access denied for user 'test'@'localhost'. Account is blocked for 1 day(s) (1 day(s) remaining) due to 3 consecutive failed logins.
bash-4.4#

第三次输入失败后有提示  Account is blocked for 1 day(s) (1 day(s) remaining) 账号已被锁1天。

# 输入正确的用户名密码登陆看是否成功
bash-4.4# mysql -utest -ptest123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3955 (HY000): Access denied for user 'test'@'localhost'. Account is blocked for 1 day(s) (1 day(s) remaining) due to 3 consecutive failed logins.
 

因输入错误3次被锁定,即使再输入正确的用户名和密码也无法登陆。

解锁

ALTER USER 'test'@'localhost' IDENTIFIED BY 'test123' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 0;

设置0:代表解锁。

三、MySQL8 用户资源限制

       将全局系统变量 max_user_connections 设置为非零值,可以限制同时建立的连接数,但是对客户端连接后可以执行的查询更新操作没有限制。客户端可以发出的任何语句都计入查询限制,只有修改库表才计入更新限制。

MAX_QUERIES_PER_HOUR:客户端每小时可以发出的查询数;
MAX_UPDATES_PER_HOUR:客户端每小时可以发出的更新数;
MAX_CONNECTIONS_PER_HOUR:客户端每小时可以连接到服务器的次数;
MAX_USER_CONNECTIONS:客户端同时连接的服务器数量等。

通过创建用户账号限制示例:

CREATE USER 'test'@'localhost' IDENTIFIED BY 'test123'
  WITH MAX_QUERIES_PER_HOUR 10000 
  MAX_UPDATES_PER_HOUR 10000 
  MAX_CONNECTIONS_PER_HOUR 10000 
  MAX_USER_CONNECTIONS 10000 ; # 客户端每小时的查询数、更新数、连接服务器的次数和数量为10000 。

通过修改和删除账号限制示例:

ALTER USER 'test'@'localhost' WITH MAX_QUERIES_PER_HOUR 10000; //修改限制
ALTER USER 'test'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0; //设置0,为删除限制

    好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 "点赞" 和 "关注" 哦,我们下次见!🎈

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

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

相关文章

【秋招笔试】8.14联想(算法岗)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Cortex-A7的GIC(全局中断控制器)使用方法(6):基于stm32MP135的IRQ初始化及处理流程分析

0 参考资料 STM32MP13xx参考手册.pdf(RM0475) ARM Generic Interrupt Controller Architecture version 2.0 - Architecture Specification.pdf 1 基于Cortex-A7的STM32MP135的IRQ初始化及处理流程分析 熟悉基于Cortex-M内核的stm32系列MCU的一定对中断…

RabbitMQ练习(Hello World)

1、RabbitMQ教程 《RabbitMQ Tutorials》https://www.rabbitmq.com/tutorials RabbitMQ是一个消息代理,它接受并转发消息。你可以将其想象成一个邮局:当你将需要邮寄的信件放入邮筒时,你可以确信邮递员最终会将邮件投递给你的收件人。在这个…

LDR6500-type-c 接口小封装PD取电协议芯片

LDR6500 Type-C PD取电芯片是一种基于Type-C接口的电源传输的协议芯片,它通过Type-C接口中的CC(Configuration Channel)线进行通信,协商电压、电流及供电方向。当设备连接时,双方会进行握手通信,以确定彼此…

在AMD GPU上进行Grok-1模型的推理

Inferencing with Grok-1 on AMD GPUs — ROCm Blogs 我们展示了如何通过利用ROCm软件平台,能在AMD MI300X GPU加速器上无缝运行xAI公司的Grok-1模型。 介绍 xAI公司在2023年11月发布了Grok-1模型,允许任何人使用、实验和基于它构建。Grok-1的不同之处…

Java学习Day29:查漏补缺

1.只创建对象不创建文件 2.过滤器 使用匿名内部类实现FileFilter接口,实现过滤; 递归实现遍历目录及子目录下的后缀为。txt文件 public class ioRee {public static void main(String[] args) throws IOException {File file new File("D:\\A&quo…

pywebview 入门

pywebview 入门 文档地址 地址 https://pywebview.flowrl.com/guide/ 一、pywebview 简介 1. 什么是 pywebview? pywebview 是一个轻量级的 python 库,旨在简化桌面应用程序的开发。它利用系统的 WebView 组件,使得开发人员可以使用现代 …

web过滤器,前后端同步异步交互,跨域问题,json等知识点

一.过滤器 (1)什么是过滤器 过滤器(Filter):是web服务器管理所有的web资源例如servlet,例如实现权限访问控制、过滤敏感词汇、压缩响应信息等。 (2)过滤器的作用 通过过滤器可以实现对服务器web资源的拦截,例如编码过滤器通过对web资源的过滤拦截可以实…

python-素数回文(赛氪OJ)

[题目描述] 现在给出一个素数,这个素数满足两点: 1、 只由 1∼9 组成,并且每个数只出现一次,如 13,23,1289 。 2、 位数从高到低为递减或递增,如 2459,87631 。 请你判断一下,这个素数的回文数是否为素数&a…

python之matplotlib (1 介绍及基本用法)

介绍 matplotlib是Python中的一个绘图库,它提供了一个类似于 MATLAB 的绘图系统。使用matplotlib你可以生成图表、直方图、功率谱、条形图、错误图、散点图等。matplotlib广泛用于数据可视化领域,是 Python 中最著名的绘图库之一。 同样matplotlib的安…

day23-测试自动化之Appium的滑动和拖拽事件、高级手势ActionChains、手机操作API

目录 一、滑动和拖拽事件 1.1.应用场景 1.2.swipe滑动事件 1.3.scroll滑动事件 1.4.drag_and_drop拖拽事件 1.5.滑动和拖拽事件的选择 二、高级手势ActionChains 2.1.应用场景 2.2.使用步骤 2.3.注意点 2.4.方法 1).手指轻敲操作 (掌握) 2).手势按下和抬起操作(掌握&#xff0…

【Win/Mac】InDesign 2024(id2024排版和设计软件)中文安装版

目录 一、软件概述 二、下载 三、主要特点 系统要求(Windows 系统) 一、最低系统要求 二、推荐系统要求 三、图形处理器要求 系统要求(Mac 系统) 一、最低系统要求 二、推荐系统要求 三、图形处理器要求 使用方法 一、…

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

💌 所属专栏:【单片机开发软件技巧】 😀 作  者: 于晓超 🚀 个人简介:嵌入式工程师,专注嵌入式领域基础和实战分享 ,欢迎咨询! 💖 欢迎大家&#xff1…

缓存学习

缓存基本概念 概念 对于缓存,最普遍的理解是能让打开某些页面速度更快的工具。从技术角度来看,其本质上是因为缓存是基于内存建立的,而内存的读写速度相比之于硬盘快了xx倍,因此用内存来代替硬盘作为读写的介质当然能大大提高访…

亲测解决OneDrive: Proxy Authentication Error - 2606

这个问题由网络配置有误引起,解决方法是换网络或者关闭代理。 解决方法 换一个网络,比如手机wifi。如果开了代理可以把代理关了。 原版笔记 use vanilla network

RK3588——Linux系统烧录(以Firefly的Core-3588L为例)

Firefly的Core-3588L官网 1. 硬件连接 首先先用Type-C 一端数据线板子的OTG,另一端连接电脑的USB。 按住设备上的 RECOVERY (恢复)键并保持,连接电源,保持2秒左右,松开RECOVERY (恢复&#xff…

图模型训练

一、依赖安装 网址:pyg-team/pytorch_geometric: Graph Neural Network Library for PyTorch (github.com) 找到此处,点击here进入依赖安装界面 找到自己安装的torch版本并点击,,进入安装依赖 二、用库自带的数据集 代码&#x…

WCT系列(二):SyncTransactionQueue类详解

SyncTransactionQueue类: 接上一回的WindowContainerTransaction类讲解,上一篇博客根据TaskView.java中的updateTaskVisibility()方法分析了WindowContainerTransaction的功能及使用。本次继续上一篇的思路,主要拆解syncTransactionQueue类。…

【JUC】06-可重入锁

可重入锁:又称递归锁。在外层使用锁后,内层仍然可以使用,并不发生死锁,这样的锁就叫可重入锁。synchronized默认是一个可重入锁。 public class Demo01 {public synchronized void m1() {System.out.println(Thread.currentThrea…

软件函数过期-软件开发故障处理-开发语言升级-全栈软件架构师-软件修仙界掌握几十门开发语言

一、软件界通用关键字 obsolete,deprecated,deprecation 二、多语言全栈,所有语言混合开发是什么?十几门开发语言 组合1、php/java/aspJSCandroid 平台物联网设备,智能音箱 组合2:C#PHPPYTHON 组合3&am…