mysql 用户权限管理

mysql使用系统库mysql的user表来存储用户信息。mysql.user表详细的记录了用户名,对应的允许连接的主机信息还有各种全局权限标识位。

用户管理

创建用户
CREATE USER '用户名'@'host主机' IDENTIFIED BY '密码';

上面是创建用的基本命令,指定了用户名,密码和允许连接的主机。其中host如果设置为localhost,则是只允许本机连接,不允许远程连接。如果开放远程连接可以使用’%‘(允许所有主机连接)。一般root用户不开启远程连接为好。也可以使用通配符,如’192.168.10.%’

关于密码,以前的版本可以使用PASSWORD(‘密码’)函数来设置密码,该函数已经被标记为过时,且在mysql8中被删除了,尽量直接使用密码明文即可,下面的auth plugin会自动进行密码的加密。

除了基本信息外,还可以有其它选项进行账号属性设置

1、设置密码校验插件(auth plugin)
CREATE USER 'jeffrey'@'localhost'IDENTIFIED WITH caching_sha2_password BY 'password'

密码的存储都是密文,在密码加密过程中可以指定密码认证插件,使用上面的IDENTIFIED WITH语句来明确指定认证插件,其中caching_sha2_password就是一种认证方式。mysql有多个认证插件,在MySQL 8.0.27之前的版本,使用default_authentication_plugin变量来定义默认的认证插件

5.7

mysql> SELECT @@default_authentication_plugin;
+---------------------------------+
| @@default_authentication_plugin |
+---------------------------------+
| mysql_native_password           |
+---------------------------------+

8.0

mysql> SELECT @@default_authentication_plugin ;
+---------------------------------+
| @@default_authentication_plugin |
+---------------------------------+
| caching_sha2_password           |

对于mysql5.7默认的认证插件方式是mysql_native_password,对于8.0版本新增了一个caching_sha2_password作为默认认证插件。

2、设置密码过期时间
CREATE USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 180 DAY;

使用PASSWORD EXPIRE语句来指定密码的有效期,像上面的INTERVAL 180 DAY就是180天后过期。

如果没有明确指定密码过期策略,默认使用default_password_lifetime指定值来确认密码过期方式。

mysql> select @@default_password_lifetime;
+-----------------------------+
| @@default_password_lifetime |
+-----------------------------+
|                           0 |

default_password_lifetime默认值是0表示永远不过期,如果指定一个大于0的值,代表多少天后过期。

密码过期有以下常见格式:

1、PASSWORD EXPIRE

后面没有任何参数,密码立即过期。这样可以创建一个不能登录的账号

2、PASSWORD EXPIRE DEFAULT

使用默认的过期策略,也就是default_password_lifetime指定的方式

3、PASSWORD EXPIRE NEVER

永不过期

4、PASSWORD EXPIRE INTERVAL N DAY

N天后过期

3、锁定用户
CREATE USER test@'%' ACCOUNT LOCK;

锁定的用户,客户端登录会报:Error number: 3118; Symbol: ER_ACCOUNT_HAS_BEEN_LOCKED; SQLSTATE: HY000 . Account is locked.错误。

4、访问资源限制
CREATE USER 'jeffrey'@'localhost'WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100 MAX_USER_CONNECTIONS 10;
  • MAX_USER_CONNECTIONS

当前用户最大允许创建连接数,默认值使用max_user_connections变量,变量值为0表示不限制。

  • MAX_CONNECTIONS_PER_HOUR ,MAX_QUERIES_PER_HOUR,MAX_UPDATES_PER_HOUR

这三个参数限制了每小时连接数、查询数和更新数。

用户修改

用户的修改要素和create语句是一样的,只不过语句变成了ALTER.如下:

ALTER USER 'jeffrey'@'localhost'IDENTIFIED WITH sha256_password BY 'new_password'PASSWORD EXPIRE INTERVAL 180 DAY;

修改用户时:用户名和host组成了条件信息。

用户删除
DROP USER 'jeffrey'@'localhost';

如果不指定host,默认删除host值为’%'的记录。

权限管理

权限分类

数据库有很多中权限,按照作用范围不同大致可以分为以下几种权限:

全局权限

ALL [PRIVILEGES]:所有的权限

SHOW DATABASES:使用SHOW DATABASES 命令查看数据库列表权限

PROCESS:允许使用SHOW PROCESSLIST查看所有进程权限

SHUTDOWN:允许使用mysqladmin shutdown命令关闭数据库权限

FILE:允许文件操作权限,像select into outfile,load data infile等都需要该权限

CREATE USER:允许CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES操作

REPLICATION SLAVE:允许用户读取binlog进行主从复制

REPLICATION CLIENT:允许查看复制状态,像show master status,show slave status,show binary logs命令

SUPER:超级权限,允许执行一系列数据库管理命令,像CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin等命令

RELOAD:允许执行flush命令

CREATE TABLESPACE:表空间管理权限

GRANT OPTION:分配权限操作

数据库对象操作权限:

CREATE VIEW:创建视图权限

SHOW VIEW:使用SHOW CREATE VIEW查看视图权限

TRIGGER:触发器操作权限

CREATE ROUTINE:创建存储过程和函数权限

ALTER ROUTINE:修改存储过程和函数权限

EXECUTE:执行存储过程和函数权限

INDEX:索引操作权限

CREATE TEMPORARY TABLES:创建临时表权限

CREATE:创建数据库,创建表权限

ALTER:修改表操作

DROP:删除数据库、表、视图,truncate table等权限

LOCK TABLES:锁表权限

表数据操作权限:

INSERT:插入数据权限,ANALYZE TABLE, OPTIMIZE TABLE操作也需要该权限

DELETE:删除数据

SELECT:查询权限

UPDATE:更新数据权限

更多权限可以查看官方网站 privileges-provided

权限分配

权限的分配使用GRANT语句

GRANT priv_type...  ON [object_type] priv_level TO user

priv_type是权限列表,多个用英文逗号相隔

object_type:对象范围,可以是数据库,表,存储过程等。

#全局级别
GRANT ALL ON *.* TO 'someuser'@'somehost';
#数据库级别
GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'somehost';
#表级别
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';
#列级别
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';
#ROUTINE
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';

被grant分配后的权限,根据权限类型的不同存储在系统库不同的表中:

全局权限存储在:sys.user表中

数据库级别权限存储在:mysql.db表中

表级权限存储在:mysql.tables_priv表

列级别存储在:mysql.columns_priv表

ROUTINE类型存储在mysql.procs_priv。

user需要用户名和host两部分表示,格式是 username@host。host同创建用户时host,username可以是空表示给所有用户赋通用权限。

例:

#将db1数据库所有权限赋给用户
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
#将db2库invoice对象的查询权限赋给用户
GRANT SELECT,INSERT ON db2.invoice TO 'jeffrey'@'localhost';
权限回收

权限的回收使用REVOKE语句,revoke语法几乎和grant一致,只是grant改成了revoke。

REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';
权限查询

使用show grants可以查看分配的用户权限,如果要查特定用户的可以使用for user来指定

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
SHOW GRANTS FOR 'jeffrey'@'localhost';

在grant或revoke修改了权限后,一般会使用FLUSH PRIVILEGES命令使权限生效。FLUSH PRIVILEGES会从新加载系统权限表数据到内存。

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

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

相关文章

Selenium基础知识

一、环境搭建(以java为例) 1.下载chrome浏览器 https://www.google.cn/intl/zh-CN/chrome/ 2.查看chrome浏览器版本 设置关于chrome 3.下载chrome浏览器驱动 下载浏览器对应版本的 ChromeDriver - WebDriver for Chrome - Downloads 120以上版本&…

WordPress使用

WordPress功能菜单 仪表盘 可以查看网站基本信息和内容。 文章 用来管理文章内容,分类以及标签。编辑文章以及设置分类标签,分类和标签可以被添加到 外观-菜单 中。 分类名称自定义;别名为网页url链接中的一部分,最好别设置为中文…

概率密度函数(PDF)与神经网络中的激活函数

原创:项道德(daode3056,daode1212) 在量子力学中,许多现象都是统计的结果,基本上用的是正态分布,然而,从本质上思考,应该还存在低阶的分布,标准的正态分布是它的极限,这样一来,或许在…

python中多线程使用

前言 记录下Python中多线程使用 标题 前言简介使用demo 简介 Python 中的多线程主要通过 threading 模块来实现。多线程是一种并发编程的方式,允许程序在同一时间执行多个线程,每个线程执行不同的任务。然而需要注意的是,在 Python 中由于 …

【前端素材】推荐优质后台管理系统Spica Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【安全】大模型安全综述

大模型相关非安全综述 LLM演化和分类法 A survey on evaluation of large language models,” arXiv preprint arXiv:2307.03109, 2023.“A survey of large language models,” arXiv preprint arXiv:2303.18223, 2023.“A survey on llm-gernerated text detection: Necess…

刷题日记-Day1- Leedcode-704. 二分查找,27. 移除元素-Python实现

704 二分查找 链接:https://leetcode.cn/problems/binary-search/description/ 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标&#xf…

vue3 toRefs之后的变量修改方法

上效果 修改值需要带上解构之前的对象名obj&#xff0c; changeName:()>{ // toRefs 解决后变量修改值方法&#xff1a; 解构前变量.字段新值 obj.name FEIFEI; } } 案例源码 <!DOCTYPE html> <html> <head><me…

如何在pgAdmin中用替换的值更新jsonb列?

我有一个名为files的PostgreSQL表&#xff0c;其中包括一个名为formats的jsonb表。虽然有些行是[null]&#xff0c;但其他行具有此结构的对象&#xff1a; {"thumbnail": {"ext": ".jpg","url": "https://some-url.com/image01.…

Vue | (四)使用Vue脚手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;初始化脚手架&#x1f407;创建初体验&#x1f407;分析脚手架结构&#x1f407;关于render&#x1f407;查看默认配置 &#x1f4da;ref与props&#x1f407;ref属性&#x1f407;props配置项 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped样…

idea配置javafx

一、下载sdk 在jdk8之后,需要下载sdk包 📎javafx-sdk-18.zip 这里适用的jkd版本如图 二、配置 创建一个项目之后,进行如下配置,将sdk导入到项目中 配置启动参数 可以使用-号将之前的去掉&

同步 BUCK 与 异步 BUCK 的区别

上篇文章介绍 BUCK 基本拓扑电路工作原理&#xff0c;BUCK 电路如下图&#xff1a; 因为二极管的存在&#xff0c;只需要控制一个 MOS 管开关&#xff0c;一般将该电路称为异步 BUCK 电路&#xff0c;如果把这个二极管换为 MOS 管&#xff0c;如下图&#xff1a; 该电路用到了两…

vue Threejs实现任意画线(鼠标点击画线)

Threejs实现任意画线(鼠标点击画线) 鼠标左键单击添加点鼠标右键回退到上一个点,并继续画按住shift可以画平行于x轴或平行于z轴的线按Esc完成画线

【leetcode题解C++】121.买卖股票的最佳时机 and 122.买卖股票的最佳时机II and 55.跳跃游戏 and 45.跳跃游戏II

121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从…

汽车信息安全概述

随着智能网联汽车的迅猛发展&#xff0c;车辆不再是简单的交通工具&#xff0c;而是集数据收集、处理与通信于一体的移动智能终端。然而&#xff0c;这一变革也使得汽车成为黑客攻击的新目标。汽车信息安全问题日益凸显&#xff0c;成为行业关注的焦点。本文将深入探讨汽车信息…

前后端分离vscode保险业务管理系统vue+Nodejs

本设计主要应用于完成对保险业务进行计算机化的管理。系统前台展示各种种类的保险&#xff0c;顾客可以选择登陆后买入。公司员工为管理员&#xff0c;由公司统一分配账号&#xff0c;员工用工号密码登陆。可以修改密码&#xff0c;查看、修改自己的信息。员工可处理顾客信息。…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密码:hvev 免费的企微框架 支持文本消息&#xff0c;图片消息&#xff0c;视频消息&#xff0c;文件消息。 其他可自行下载测试。 有兴趣可以进群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

Windows sever Event 70117000事件日志

背景&#xff1a;Windows server2008 频繁蓝屏&#xff0c;日志报错信息时间ID&#xff1a;7011&7000&#xff0c;Service Control Manager 原因&#xff1a;Service Control Manager transmits control requests to running services and driver services. It also maint…

mysql-MVCC

一、基础概念 1. MVCC的含义 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并发控制技术&#xff0c;它是通过读取某个时间点的快照数据&#xff0c; 来降低并发事务冲突而引起的锁等待&#xff0c; 从而提高并发性能的一种机制. MVCC 的实现,是通过保存数据…