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;

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

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

相关文章

【QT】常用控件-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 目录 &#x1f449;&#x1f3fb;QWidgetenabledgeometryrect制作上下左右按钮 window frame 的影响window titlewindowIcon代码示例: 通过 qrc 管理图片作为图标 windowOpacitycursor使用qrc自…

【论文笔记】SEED: A Simple and Effective 3D DETR in Point Clouds

原文链接&#xff1a;https://arxiv.org/abs/2407.10749 简介&#xff1a;基于DETR的3D点云检测器难以达到较高的性能&#xff0c;这可能有两个原因&#xff1a;&#xff08;1&#xff09;由于点云的稀疏性和分布不均匀&#xff0c;获取合适的物体查询较为困难&#xff1b;&…

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

给虚拟机Ubuntu扩展硬盘且不丢数据

1.Ubuntu关机状态下先扩展&#xff0c;如扩展20GB 2.进入ubuntu&#xff0c;切换root登录&#xff0c;必须是root全选&#xff0c;否则启动不了分区工具gparted 将新的20GB创建好后&#xff0c;选择ext4,primary&#xff1b; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…

【C++】C++11之新的类功能与可变参数模板

目录 一、新的默认成员函数 二、新的关键字 2.1 default 2.2 detele 2.3 final和override 三、可变参数模板 3.1 定义 3.2 递归展开参数包 3.3 逗号表达式展开参数包 3.4 emplace_back 一、新的默认成员函数 在C11之前&#xff0c;默认成员函数只有六个&#xff0c;…

【机器学习算法基础】(基础机器学习课程)-11-k-means-笔记

示例案例 为了更好地理解 K-Means 算法&#xff0c;下面通过一个简单的案例进行说明。 假设我们有以下 10 个二维数据点&#xff0c;表示不同商店的销售额&#xff08;单位&#xff1a;千元&#xff09;和顾客数&#xff08;单位&#xff1a;人&#xff09;&#xff1a; [(1…

常见cms漏洞之dedecms

DedeCMS是织梦团队开发PHP 网站管理系统&#xff0c;它以简单、易用、高效为特色&#xff0c;组建出各种各样各具特色的网站&#xff0c;如地方门户、行业门户、政府及企事业站点等。 下载地址请网上自行寻找 搭建方式选择php study 首先搭建环境 #前台http://localhost/dedecm…

Java AI伪原创视频创作视频提取文案改写去水印系统小程序源码

&#x1f525;AI赋能创作新纪元&#xff01;伪原创视频文案提取改写去水印全能系统大揭秘 &#x1f680; 开篇&#xff1a;创意无界&#xff0c;AI来助力 在这个视觉盛行的时代&#xff0c;视频创作成为了表达自我、传递信息的重要方式。但你是否曾为寻找灵感、撰写文案、处理…

sa-token登录机制以及网关统一鉴权环境搭建

文章目录 1.sa-token1.37集成&#xff08;基于token&#xff09;1.文档网址2.**sun-club-auth-application-controller引入依赖**3.application.yml4.sun-club-auth-application-controller测试的controller1.UserController.java2.启动测试1.登录&#xff0c;得到satoken2.验证…

【FPGA】cordic算法实现三角函数

参考资料&#xff1a;https://zhuanlan.zhihu.com/p/638520243https://zhuanlan.zhihu.com/p/638520243

Hadoop学习(三)

一、MapReduce框架原理 1.1InputFormat数据输入 MapTask并行度决定机制 1&#xff09;数据块&#xff08;HDFS存储数据单位&#xff09;&#xff0c;物理上把数据分成一块一块 2&#xff09;数据切片&#xff08;MapReduce程序计算输入数据的单位)&#xff1a;只是在逻辑上…

Lanproxy开箱即用的内网穿透工服务!!

Lanproxy快速上手配置服务器转发到内网!! 本教程云服务器推荐使用的开发环境如下&#xff1a;服务器端配置配置端口登录Web界面 内网客户端配置下载客户端配置客户端端口 最终效果测试 本文主要记录了使用Lanproxy搭建内网穿透服务的过程&#xff0c;其中包括服务端和客户端的详…

CSP2019第二题: 公交换乘

CSP 2019 公交换乘 题目来源&#xff1a;牛客网 题目&#xff1a;* 示例1 输入 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135输出 36题意&#xff1a; 根据输入&#xff0c;计算地铁花费不能用到优惠券的公交车的花费 知识点&#xff1a; 结构体 思路&#xff1…

谷粒商城实战笔记-vagrant避坑指南

文章目录 一&#xff0c;虚拟机磁盘空间不足问题原因解决方案 二&#xff0c;虚拟机导致C盘空间不足 一&#xff0c;虚拟机磁盘空间不足 使用vagrant管理虚拟机的过程中遇到了一个问题&#xff0c;虚拟机安装完成后&#xff0c;很快磁盘dev/sda1就满了&#xff0c;40G的空间&a…

Linux网络-小结

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注我&#xff0c;我尽量把自己会的都分享给大家&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器&#xff0c;主要的作用就是向客户端提供网络…

【Python】数据类型之字符串

本篇文章将继续讲解字符串其他功能&#xff1a; 1、求字符串长度 功能&#xff1a;len(str) &#xff0c;该功能是求字符串str的长度。 代码演示&#xff1a; 2、通过索引获取字符串的字符。 功能&#xff1a;str[a] str为字符串&#xff0c;a为整型。该功能是获取字符…

Java语言程序设计——篇十一(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …

HarmonyOS NEXT——奇妙的调用方式

注解调用一句话总结Extend抽取特定组件样式、事件&#xff0c;可以传递参数Style抽取公共样式、事件&#xff0c;不可以传递参数Builder抽取结构、样式、事件&#xff0c;可以传递参数BuilderParams自定义组件中传递UI组件多个BuilderParams自定义组件中传递多个UI组件 Extend…

【练习】使用DevEco Studio编写计数器案例

效果展示 默认状态 点击加号 点击减号 知识点 类型转换&#xff08;数字 和 字符串&#xff09; 字符串转数字 方法说明例子Number()字符串 直接转数字&#xff0c;转换失败返回NaN&#xff08;字符串包含非数字&#xff09; let str1: string 1.1 console.log(Number(str1)…