MySQL:数据库用户
数据库用户
在关系型数据库管理系统中,数据库用户(USER)是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码,以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库,在其中执行各种类型的操作,如创建表格、插入、更新和删除数据、执行查询等。
数据库用户可以分为多个级别,如超级用户、普通用户、只读用户等,他们各自具有不同的权限和访问权限。超级用户具有完全控制数据库的权限,包括创建和删除数据库、用户、表格等,而只读用户只能查看数据库中的数据,无法对其进行任何修改操作。
用户权限
MySQL 的 USER 权限级别:
-
全局性管理权限:作用于整个 MySQL 实例级别
-
数据库级别:作用于指定的某个数据库上或者所有数据库上
-
数据库对象级别权限:作用于指定的数据库对象上(表或者视图)
MySQL 的 USER 权限:
![![[MySQL User Privilege.png]]](https://i-blog.csdnimg.cn/direct/70df2034f99445fbb2adb426006334ee.png)
Mysql数据库用户权限存储在 MySQL 库的 user, db, tables_priv, columns_priv, procs_priv 这几个系统表中,MySQL实例启动后就加载到内存中:
-
user:存放用户账户信息以及全局级别(所有数据库)权限,(存放了那些用户可以访问那些数据库的权限) -
db:数据库级别权限,决定了来自哪些主机的哪些用户可以访问此数据库 -
tables_priv:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的那张表 -
columns_priv:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的字段 -
procs_priv:存放存储过程和函数级别的权限
root 用户
root 用户是具有最高权限的用户,拥有 MySQL 中的所有权限。作为 root 用户,可以执行任何操作,包括创建用户、授予权限、修改数据库结构等。
然而,出于安全考虑,使用 root 用户进行日常任务是不推荐的,应该创建一个具有适当权限的普通用户来执行常规操作。通过这种方式,可以限制特权的滥用和减少潜在的安全风险。
创建用户
使用 CREATE USER 语句创建 MySQL 用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password'
username:要创建的用户名,host:用户允许登录的主机名或 IP 地址,password:用户的密码。
CREATE USER 'user' IDENTIFIED BY '123456';-- 所有ip都可用账号
CREATE USER 'user'@'%' IDENTIFIED BY '123456';-- 本地可用账号
CREATE USER 'user'@'localhost' IDENTIFIED BY '123456';-- 指定 IP 可用账号
CREATE USER 'user'@'192.138.17.2' IDENTIFIED BY '123456';-- 指定网段可用账号
CREATE USER 'user'@'192.138.17.%' IDENTIFIED BY '123456';
SQL 创建用户
CREATE USER <username> [WITH][DBA|RESOURCE|CONNECT];
只有系统的超级用户才有权创建一个新的数据库用户。
CREATE USER 命令中如果没有指定创建的新用户的权限,默认该用户拥有 CONNECT 权限。
-
拥有
CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。由数据库管理员或其他用户授予他应有的权限,根据获得的授权情况他可以对数据库对象进行权限范围内的操作。 -
拥有
RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式 SCHEMA(数据库),不能创建新的用户。数据库对象的属主可以使用 GRANT 语句把该对象上的存取权限授予其他用户。 -
拥有
DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等;DBA 拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。
修改用户信息
修改用户名
使用 RENAME USER 语句修改用户名:
RENAME USER 'username' TO 'newname';
设置用户密码
MySQL 数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。
- 修改其他用户密码(当前用户要有权限),一般在 root 用户下操作
使用 MySQL 语句
ALTER USER 'username'@'host' IDENTIFIED BY 'newPassword';SET PASSWORD FOR 'username'@'host'=PASSWORD('newpassword');GRANT USER ON permission
TO 'username'@'host' IDENTIFIED BY 'newPassword';
在系统命令行下修改:
mysqladmin –u uername –h host password "newpassword"
- 修改当前用户密码
SET PASSWORD FOR 'username' = PASSWORD('new_password');ALTER USER user() IDENTIFIED BY 'new_password';
用户的锁定与解锁
在创建用户时或用户创建后可以将用户锁定,用户被锁定后,此用户无法完成登录:
-- 在创建用户时锁定用户
CREATE USER 'username'@'host' IDENTIFIED 'password'
ACCOUNT LOCK;
-- 用户创建后,锁定用户
ALTER USER 'username'@'host' ACCOUNT LOCK;
-- 解锁用户
ALTER USER 'username'@'host' ACCOUNT LOCK;
密码过期策略
自 MySQL 5.7.4 版本开始,MySQL 引入了默认密码过期策略,用于增强安全保护机制。
默认过期策略要求新创建的 MySQL 用户在第一次登录时强制更改其初始密码,以避免安全漏洞。
当创建新用户时,MySQL 会为其分配一个默认密码,并将用户设置为需要修改密码。一旦用户登录 MySQL 服务器,就会提示用户修改其初始密码。如果用户在规定时间内(default_password_lifetime 变量定义的时间,默认为 360 天)没有更改密码,系统将拒绝该用户的登录请求。
设置密码过期策略
Mysql 数据库用户同系统用户一样,可以设置密码过期策略,密码的过期天数可以在配置文件里面设置,也可以通过命令设置。
配置文件中设置
选项:default_password_lifetime="过期天数" :如果设置为0,则密码永不过期。
通过 MySQL 命令设置
通过命令为每个用户设置密码的过期天数则会覆盖系统配置文件中的设置。
-- 设置过期天数
ALTER USER 'username'@'localhost' PASSWORD
EXPIRE INTERVAL number day;
-- 设置密码不过期
ALTER USER 'username'@'localhost' PASSWORD
EXPIRE never;
-- 默认过期策略
ALTER USER 'username'@'localhost' PASSWORD
EXPIRE DEFAULT;
-- 手动强制密码过期
ALTER USER 'username'@'localhost' PASSWORD EXPIRE;
自定义密码过期策略
如果存在自定义密码策略,则 MySQL 会使用自定义策略,而不是默认密码过期策略。如果需要禁用默认密码过期策略,可以使用以下命令:
SET GLOBAL default_password_lifetime = 0;
禁用默认密码过期策略,并允许在创建或更改用户时将其密码永久化。
查看默认密码过期策略下用户的状态
要查看默认密码过期策略下用户的状态,可以使用以下命令:
SELECT User, Host, plugin, authentication_string, password_expired FROM mysql.user;
User和Host代表用户名和主机名authentication_string代表用户的加密密码plugin代表用户的身份验证插件password_expired字段表示用户是否需要更改密码。
MySQL 数据库用户资源限制
通过修改 MySQL 数据库资源限制可以限制用户在某个时间段内连接 MySQL 数据库的时间、执行语句的次数等。
- 设置参数:
-
MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接 MySQL 的时间 -
MAX_USER_CONNECTIONS:一个用户可以在同一时间连接 MySQL 实例的数量 -
MAX_EXECUTION_TIME:限制单个查询执行的最大时间。 -
MAX_QUERIES_PER_HOUR:查询速率限制,一个用户在一个小时内可以执行查询的次数(基本包含所有语句) -
MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次数(仅包含修改数据库或表的语句) -
MAX_ALLOWED_PACKET:限制单个数据包传输的最大大小 -
QUERY_CACHE_SIZE:限制查询缓存的最大大小 -
MAX_CONNECT_ERRORS:限制在指定时间内允许的连接失败次数
- 设置 MySQL 数据库用户资源限制
设置 MySQL 数据库用户资源限制时可以在创建用户时设置,也可以在用户创建完成后通过命令设置:
-- 创建用户时进行资源控制
CREATE USER 'username'@'localhost' INDENTIFIED BY '123456'
WITH
MAX_QURIES_PER_HOUR 20
MAX_CONNECTIONS_PER_HOUR 5
MAX_USER_CONNECTIONS 1;
-- 对已存在的用户进行资源控制
ALTER USER 'username'@localhost
MAX_UPDATES_PER_HOUR 10
MAX_CONNECTIONS_PER_HOUR 5
MAX_USER_CONNECTIONS 1;
相关文章:
MySQL:数据库用户
数据库用户 在关系型数据库管理系统中,数据库用户(USER)是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码,以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库,在其中执行各种类…...
用TensorFlow训练自己的第一个模型
现在学AI的一个优势就是:前人栽树后人乘凉,很多资料都已完善,而且有很多很棒的开源作品可以学习,感谢大佬们 项目 项目源码地址 视频教程地址 我在大佬的基础上基于此模型还加上了根据特征值缓存进行快速识别的方法,…...
MySQL数据库入门基础知识 【1】推荐
数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…...
Anaconda下的 jupyter notebook安装及使用
安装 打开Anaconda Powershell Prompt或Anconda Prompt 输入命令conda install jupyter notebook进行安装 启动 切换到工作目录,输入命令jupyter notebook等待浏览器打开网页 命令行启动jupyter notebook的链接复制到浏览器同样可以打开jupyter notebook 在Ancon…...
C语言初阶(11)
1.结构体定义 结构体就是一群数据类型的集合体。这些数据类型被称为成员变量。结构的成员可以是标量、数组、指针,甚至是其他结构体。 2.结构体的声明和结构体变量命名与初始化 结构体声明由以下结构组成 struct stu {char name[12];int age; }; 结构体命名有两…...
Unity获取Animator动画播放完成事件
整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一:Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…...
git submodule 使用
在Git中,子模块(submodule)是一种将一个Git仓库作为另一个Git仓库的子目录嵌入的方式。这使得主仓库能够跟踪和管理对外部依赖的更改。 添加子模块 初始化父仓库:如果你还没有创建父仓库,先创建它。 添加子模块&…...
【Jenkins未授权访问漏洞 】
默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。 第一步:使用fofa语句搜索 搜索语句: port&…...
前端处理 Excel 文件
引入XLSX XLSX 是一个流行的 JavaScript 库,用于处理 Excel 文件(包括 .xls 和 .xlsx 格式)。它可以在 Node.js 环境和浏览器中运行,提供了丰富的 API 来读取、写入、修改 Excel 文件。当你使用 import * as XLSX from xlsx; 这行…...
(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求:按勾选的顺序给后端传值 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-…...
Redis进阶(四):哨兵
为了解决主节点故障,需要人工操作切换主从的情况;因此需要一种方法可以自动化的切换:哨兵的引入大大改变这种情况。 哨兵的基本概念 自动切换主从节点 哨兵架构 1、当一个哨兵节点发现主节点挂了的时候,还需要其他节点也去检测一…...
蓝屏事件:网络安全的启示
“微软蓝屏”事件暴露了网络安全哪些问题? 近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全技…...
技术方案评审原则
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言技术方案评审原则1.理论突破阶段2.技术突破阶段3.工程化阶段自动驾驶行业的技术方案分析前言 认知有限,望大家多多包涵,有什么问题也希望能够与大…...
117页PPT埃森哲-物流行业信息化整体规划方案
一、埃森哲-物流行业信息化整体规划方案 资料下载方式,请看每张图片右下角信息 埃森哲在物流行业信息化整体规划项目中的核心内容,旨在帮助物流企业通过信息技术的应用实现业务流程的优化、运营效率的提升以及市场竞争力的增强。以下是埃森哲在此类项目…...
百度网盘不下载怎么直接打印文件?
在数字化时代,百度网盘作为我们存储和分享文件的重要工具,承载了大量的文档、图片和资料。然而,当需要打印这些文件时,很多用户会面临一个共同的问题:不想下载到本地再打印,既占用空间又浪费时间。那么&…...
设置了 robots.txt 禁止爬虫抓取,为什么还是能被百度搜索出来
虽然设置了 robots.txt 禁止爬虫抓取,但网页仍可能被百度搜索出来,主要有以下几个原因: robots.txt 只是一种建议性协议,并非强制性[2]。虽然大多数搜索引擎会遵守 robots.txt 的规则,但并不是所有爬虫都会严格遵守。 …...
DedeCMS-V5.7.82-UTF8织梦管理系统漏洞
将靶场环境放到www目录下——访问/dedecms/uploads 安装程序 - 织梦内容管理系统 V5.7 UTF8SP2 同意协议——继续 继续 配置后——点击继续 进入后台 登录后台——填写用户名密码。 方法一:上传shell文件 后台——核心——附件管理——上传新文件。 访问/dedecms…...
【Python】字符串练习题及代码示例
1、使用while循环实现对字符串中每个字符进行输出。 代码示例: 2、请将代码实现如下进制的转换。 (1)v1675,请将v1转换为二进制。 代码: 注意:将十进制数转换为二进制数的方法是:bin(a),a是整型&#x…...
fluent动网格profile udf 注意事项
案例一: ((profile_name transient 2 0) ....第一行 (time 0 15.0) ....第二行 (v_x 1.2 1.2)) …...
【doghead】mac构建 2: player 端 clion构建
准备工作 【doghead】mac构建 1 【doghead】mac: clion2024.1启动崩溃 mbp的 uv 构建ok zhangbin@zhangbin-mbp-2 ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv main clion使用lldb cmake构建 更...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
