当前位置: 首页 > news >正文

MySQL:数据库用户

数据库用户

在关系型数据库管理系统中,数据库用户(USER)是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码,以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库,在其中执行各种类型的操作,如创建表格、插入、更新和删除数据、执行查询等。

数据库用户可以分为多个级别,如超级用户、普通用户、只读用户等,他们各自具有不同的权限和访问权限。超级用户具有完全控制数据库的权限,包括创建和删除数据库、用户、表格等,而只读用户只能查看数据库中的数据,无法对其进行任何修改操作。

用户权限

MySQL 的 USER 权限级别:

  1. 全局性管理权限:作用于整个 MySQL 实例级别

  2. 数据库级别:作用于指定的某个数据库上或者所有数据库上

  3. 数据库对象级别权限:作用于指定的数据库对象上(表或者视图)

MySQL 的 USER 权限:

![[MySQL User Privilege.png]]

Mysql数据库用户权限存储在 MySQL 库的 user, db, tables_priv, columns_priv, procs_priv 这几个系统表中,MySQL实例启动后就加载到内存中:

  1. user:存放用户账户信息以及全局级别(所有数据库)权限,(存放了那些用户可以访问那些数据库的权限)

  2. db:数据库级别权限,决定了来自哪些主机的哪些用户可以访问此数据库

  3. tables_priv:存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的那张表

  4. columns_priv:存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的字段

  5. 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 数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。

  1. 修改其他用户密码(当前用户要有权限),一般在 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"
  1. 修改当前用户密码
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;
  • UserHost 代表用户名和主机名
  • authentication_string 代表用户的加密密码
  • plugin 代表用户的身份验证插件
  • password_expired 字段表示用户是否需要更改密码。

MySQL 数据库用户资源限制

通过修改 MySQL 数据库资源限制可以限制用户在某个时间段内连接 MySQL 数据库的时间、执行语句的次数等。

  1. 设置参数:
  • 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:限制在指定时间内允许的连接失败次数

  1. 设置 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:数据库用户

数据库用户 在关系型数据库管理系统中&#xff0c;数据库用户&#xff08;USER&#xff09;是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码&#xff0c;以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库&#xff0c;在其中执行各种类…...

用TensorFlow训练自己的第一个模型

现在学AI的一个优势就是&#xff1a;前人栽树后人乘凉&#xff0c;很多资料都已完善&#xff0c;而且有很多很棒的开源作品可以学习&#xff0c;感谢大佬们 项目 项目源码地址 视频教程地址 我在大佬的基础上基于此模型还加上了根据特征值缓存进行快速识别的方法&#xff0c;…...

MySQL数据库入门基础知识 【1】推荐

数据库就是储存和管理数据的仓库&#xff0c;对数据进行增删改查操作&#xff0c;其本质是一个软件。 首先数据有两种&#xff0c;一种是关系型数据库&#xff0c;另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据&#xff0c;表和表之间可以有很多复杂的关系&a…...

Anaconda下的 jupyter notebook安装及使用

安装 打开Anaconda Powershell Prompt或Anconda Prompt 输入命令conda install jupyter notebook进行安装 启动 切换到工作目录&#xff0c;输入命令jupyter notebook等待浏览器打开网页 命令行启动jupyter notebook的链接复制到浏览器同样可以打开jupyter notebook 在Ancon…...

C语言初阶(11)

1.结构体定义 结构体就是一群数据类型的集合体。这些数据类型被称为成员变量。结构的成员可以是标量、数组、指针&#xff0c;甚至是其他结构体。 2.结构体的声明和结构体变量命名与初始化 结构体声明由以下结构组成 struct stu {char name[12];int age; }; 结构体命名有两…...

Unity获取Animator动画播放完成事件

整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一&#xff1a;Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…...

git submodule 使用

在Git中&#xff0c;子模块&#xff08;submodule&#xff09;是一种将一个Git仓库作为另一个Git仓库的子目录嵌入的方式。这使得主仓库能够跟踪和管理对外部依赖的更改。 添加子模块 初始化父仓库&#xff1a;如果你还没有创建父仓库&#xff0c;先创建它。 添加子模块&…...

【Jenkins未授权访问漏洞 】

默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令&#xff0c;攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务&#xff0c;通过脚本执行界面从而获取服务器权限。 第一步&#xff1a;使用fofa语句搜索 搜索语句&#xff1a; port&…...

前端处理 Excel 文件

引入XLSX XLSX 是一个流行的 JavaScript 库&#xff0c;用于处理 Excel 文件&#xff08;包括 .xls 和 .xlsx 格式&#xff09;。它可以在 Node.js 环境和浏览器中运行&#xff0c;提供了丰富的 API 来读取、写入、修改 Excel 文件。当你使用 import * as XLSX from xlsx; 这行…...

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求&#xff1a;按勾选的顺序给后端传值 难点&#xff1a;在 Element UI 的 el-cascader 组件中&#xff0c;默认的行为是根据数据的层级结构来显示选项&#xff0c;用户的选择也会基于这种层级结构&#xff0c;el-…...

Redis进阶(四):哨兵

为了解决主节点故障&#xff0c;需要人工操作切换主从的情况&#xff1b;因此需要一种方法可以自动化的切换&#xff1a;哨兵的引入大大改变这种情况。 哨兵的基本概念 自动切换主从节点 哨兵架构 1、当一个哨兵节点发现主节点挂了的时候&#xff0c;还需要其他节点也去检测一…...

蓝屏事件:网络安全的启示

“微软蓝屏”事件暴露了网络安全哪些问题&#xff1f; 近日&#xff0c;一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅成为科技领域的热点新闻&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件&#xff0c;源于美国电脑安全技…...

技术方案评审原则

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言技术方案评审原则1.理论突破阶段2.技术突破阶段3.工程化阶段自动驾驶行业的技术方案分析前言 认知有限,望大家多多包涵,有什么问题也希望能够与大…...

117页PPT埃森哲-物流行业信息化整体规划方案

一、埃森哲-物流行业信息化整体规划方案 资料下载方式&#xff0c;请看每张图片右下角信息 埃森哲在物流行业信息化整体规划项目中的核心内容&#xff0c;旨在帮助物流企业通过信息技术的应用实现业务流程的优化、运营效率的提升以及市场竞争力的增强。以下是埃森哲在此类项目…...

百度网盘不下载怎么直接打印文件?

在数字化时代&#xff0c;百度网盘作为我们存储和分享文件的重要工具&#xff0c;承载了大量的文档、图片和资料。然而&#xff0c;当需要打印这些文件时&#xff0c;很多用户会面临一个共同的问题&#xff1a;不想下载到本地再打印&#xff0c;既占用空间又浪费时间。那么&…...

设置了 robots.txt 禁止爬虫抓取,为什么还是能被百度搜索出来

虽然设置了 robots.txt 禁止爬虫抓取&#xff0c;但网页仍可能被百度搜索出来&#xff0c;主要有以下几个原因&#xff1a; robots.txt 只是一种建议性协议&#xff0c;并非强制性[2]。虽然大多数搜索引擎会遵守 robots.txt 的规则&#xff0c;但并不是所有爬虫都会严格遵守。 …...

DedeCMS-V5.7.82-UTF8织梦管理系统漏洞

将靶场环境放到www目录下——访问/dedecms/uploads 安装程序 - 织梦内容管理系统 V5.7 UTF8SP2 同意协议——继续 继续 配置后——点击继续 进入后台 登录后台——填写用户名密码。 方法一&#xff1a;上传shell文件 后台——核心——附件管理——上传新文件。 访问/dedecms…...

【Python】字符串练习题及代码示例

1、使用while循环实现对字符串中每个字符进行输出。 代码示例&#xff1a; 2、请将代码实现如下进制的转换。 &#xff08;1&#xff09;v1675,请将v1转换为二进制。 代码&#xff1a; 注意&#xff1a;将十进制数转换为二进制数的方法是&#xff1a;bin(a),a是整型&#x…...

fluent动网格profile udf 注意事项

案例一&#xff1a; ((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构建 更...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑

精益数据分析&#xff08;98/126&#xff09;&#xff1a;电商转化率优化与网站性能的底层逻辑 在电子商务领域&#xff0c;转化率与网站性能是决定商业成败的核心指标。今天&#xff0c;我们将深入解析不同类型电商平台的转化率基准&#xff0c;探讨页面加载速度对用户行为的…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

C#最佳实践:为何优先使用as或is而非强制转换

C#最佳实践&#xff1a;为何优先使用as或is而非强制转换 在 C# 的编程世界里&#xff0c;类型转换是我们经常会遇到的操作。就像在现实生活中&#xff0c;我们可能需要把不同形状的物品重新整理归类一样&#xff0c;在代码里&#xff0c;我们也常常需要将一个数据类型转换为另…...

SpringCloud优势

目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...