MySQL 基础知识(八)之用户权限管理

这篇具有很好参考价值的文章主要介绍了MySQL 基础知识(八)之用户权限管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 MySQL 权限管理概念

2 用户管理

2.1 创建用户

2.2 查看当前登录用户

2.3 修改用户名

2.4 删除用户

3 授予权限

3.1 授予用户管理员权限

3.2 授予用户数据库权限

3.3 授予用户表权限

3.4 授予用户列权限

4 查询权限

5 回收权限


1 MySQL 权限管理概念

        关于 MySQL 的权限简单的理解就是 MySQL 允许你做你权利以内的事情,不可以越界。比如只允许你执行 select 操作,那么你就不能执行 update 操作。存储账户权限信息的表主要有四个:user 表、db 表、tables_priv  表、columns_priv 表。

用户权限信息表:

  • user 表:user 表存储了允许连接到服务器的用户信息,并且它指定这些用户有哪种全局(超级用户、管理员)权限。在 user 表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了 DELETE 权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。
  • db 表:db 表存储了用户对某个数据库的操作权限,在这里指定的权限适用于一个数据库中的所有表。
  • tables_priv 表:tables_priv 表存储了用户对某个表的操作权限,在这里指定的一个权限适用于一个表的所有列。
  • columns_priv 表:columns_priv 表存储了用户对表中某列的操作权限,在这里指定的权限适用于一个表的特定列。

MySQL 用户权限管理主要有以下作用:

  • 可以限制用户访问哪些库、哪些表
  • 可以限制用户对哪些表执行 SELECT、CREATE、DELETE、DELETE、ALTER 等操作
  • 可以限制用户登录的 IP 或域名
  • 可以限制用户自己的权限是否可以授权给别的用户

MySQL 权限信息表的验证过程分为两个阶段:连接权限验证和执行权限验证

  • 先从 user 表中的 Host、User、Password (MySQL 8.0 版本没有 Password,有 authentication_string,它是对密码加密后得到的密文)这 3 个字段中判断连接的 IP、用户名、密码是否存在,存在则通过验证

  • 通过连接权限验证后,进行权限分配,按照 user、db、tables_priv、columns_priv 的顺序进行验证

    • 校验 user 表,对于全局权限是 ok → 直接执行
    • 检验 db 表,对于某个特定的数据库有权限 → 执行
    • 检验 tables_priv 表,对于特定数据库下的某些表是有权限 → 执行
    • 检验 columns_priv 表,对于特定表中的某些列有权限 → 执行 

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

 MySQL 的权限分布,权限分布就是针对表可以设置什么权限,针对列可以设置什么权限等等

权限分布

可能的设置的权限

表权限

'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

列权限

'Select', 'Insert', 'Update', 'References'

过程权限

'Execute', 'Alter Routine', 'Grant'

2 用户管理

2.1 创建用户

创建用户的格式

create user [用户名]@[访问地址] identified by [密码]

       访问地址(登录主机名)表示可以在哪些网络地址上登录账户连接(访问)数据库,可以为 'localhost'、'%' 或 '196.68.%' 这个网络下的地址等

  • 'localhost' 表示本机,IPv4 中 localhost 的地址为 '127.0.0.1'
  • '%' 通配符表示任何主机都可以连接

        设置相同的用户名,不同的访问地址(主机名),这样我们可以在不同的主机(网络地址)上登录账户连接数据。根据本文 1 MySQL 权限管理概念中的连接权限验证,只有当访问地址、用名名、密码验证通过后才能登录账户连接数据库。

# 创建本地登录的用户 test1,密码为 123456
create user 'test1'@'localhost' identified by '123456';

# 创建任何主机都可以连接的用户 test2,密码为 123456
create user 'test2'@'%' identified by '123456';

# 创建访问地址为'127.0.0.2' 的用户 test3,密码为 123456
create user 'test3'@'127.0.0.2' identified by '123456';

# 查看账号、访问地址、密码
select user, host, authentication_string from mysql.user;

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

在本地登录 test3 ,结果是:拒绝连接,因为没有 'test'@'localhost'

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

2.2 查看当前登录用户
# 查看当前登录的用户
select user();

select current_user();

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

2.3 修改用户名

rename 除了用来更改用户名外,还可以更改访问地址

# 更改用户名和访问地址
rename user 'test1'@'localhost' to 'test'@'%';

#查看用户名和访问地址
select user, host from mysql.user;

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

2.4 删除用户
# 删除用名为 test2、访问地址为 '%' 的用户
drop user 'test2'@'%';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

3 授予权限

授权格式

grant [权限1,权限2,权限3] on [数据库].[表名] to [用户名]@[访问地址]
3.1 授予用户管理员权限
# 授予 'test1'@'localhost' 管理员权限
grant all privileges on *.* to 'test1'@'localhost' with grant option;

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如SELECT、CREATE、DROP 等。
  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写 “*” 表示当前数据库的所有表,“*.*” 表示所有数据库的所有表。如果要指定将权限应用到 test1 库的 user 表中,可以这么写:test1.user
  • to:将权限授予哪个用户
  • with grant option:允许被授权的用户把得到的权限继续授给其它用户
3.2 授予用户数据库权限
数据库权限 说明
select 表示授予用户可以使用 select 语句访问特定数据库中所有表和视图的权限
insert 表示授予用户可以使用 insert 语句向特定数据库中所有表添加数据行的权限
delete 表示授予用户可以使用 delete 语句删除特定数据库中所有表的数据行的权限
update 表示授予用户可以使用 update 语句更新特定数据库中所有数据表的值的权限
create 表示授权用户可以使用 create table 语句在特定数据库中创建新表的权限
alter 表示授予用户可以使用 alter table 语句修改特定数据库中所有数据表的权限
drop 表示授予用户可以删除特定数据库中所有表和视图的权限
create view 表示授予用户可以在特定数据库中创建新的视图的权限
show view 表示授予用户可以查看特定数据库中已有视图的视图定义的权限
references 表示授予用户可以创建指向特定的数据库中的表外键的权限
create routine 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限
alter routine 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限
execute routine 表示授予用户可以调用特定数据库的存储过程和存储函数的权限
index 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限
create temporary tables 表示授予用户可以在特定数据库中创建临时表的权限
lock tables 表示授予用户可以锁定特定数据库的已有数据表的权限
all 或 all privileges 表示以上所有权限
# 创建用户 test
create user 'test'@'localhost' identified by '123456';

# 授予用户 test 在 study 数据库中查询、创建、修改、删除表的权限以及创建视图的权限
grant select, create, alter, drop, create view on study.* to 'test'@'localhost';

# 查询用户 test 权限
show grants for 'test'@'localhost';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

3.3 授予用户表权限
表权限 说明
select 表示授予用户可以使用 select 语句访问特定表的权限
insert 表示授予用户可以使用 insert 语句向一个特定表中添加数据行的权限
delete 表示授予用户可以使用 delete 语句从一个特定表中删除数据行的权限
update 表示授予用户可以使用 update 语句更新特定数据表的权限
create 表示授予用户可以使用特定的名字创建一个数据表的权限
alter 表示授予用户可以使用 alter table 语句修改数据表的权限
drop 表示授予用户可以删除数据表的权限
references 表示授予用户可以创建一个外键来参照特定数据表的权限
index 表示授予用户可以在表上定义索引的权限
all 或 all privileges 表示以上所有权限
# 创建用户 learn1
create user 'learn1'@'localhost' identified by '123456';

# 授予用户 learn1 查询、创建、修改 study 数据库的 goods 表的权限
grant select, create, alter on study.goods to 'learn1'@'localhost';

# 查询用户 learn1 权限
show grants for 'learn1'@'localhost';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

3.4 授予用户列权限
列权限 说明
select(字段) 表示授予用户可以使用 select 语句访问特定列的权限
insert(字段) 表示授予用户可以使用 insert 语句向一个特定列插入数据的权限
update(字段) 表示授予用户可以使用 update 语句更新特定列的权限
# 创建用户 learn2
create user 'learn2'@'localhost' identified by '123456';

# 授予用户 learn2 查询、插入、更新 study 数据库的 goods 表的 name 列的权限
grant select(name), insert(name), update(name) on study.goods to 'learn2'@'localhost';

# 查询用户 learn2 权限
show grants for 'learn2'@'localhost';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

4 查询权限

使用 show grants; 查询 root 的权限时会出错

# 查询当前用户权限
# show grants();

# 查询特定用户权限,如 learn2
show grants for 'learn2'@'localhost';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库

5 回收权限

回收权限格式

revoke [权限1,权限2,权限3] on [数据库].[表名] from [用户名]@[访问地址]

注意回收权限是回收已经授予用户的权限,不能回收用户没有的权限

# 回收用户 learn2 插入、更新 study 数据库的 goods 表的 name 列的权限
revoke insert(name), update(name) on study.goods from 'learn2'@'localhost';

# 查询你 用户 learn2 的权限
show grants for 'learn2'@'localhost';

MySQL 基础知识(八)之用户权限管理,MySQL,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-830350.html

到了这里,关于MySQL 基础知识(八)之用户权限管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql【基础篇】—— mysql基础知识

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2024年02月05日
    浏览(39)
  • MySQL用户管理及用户权限

    目录 数据库用户管理 新建用户 查看用户 重命名用户rename 删除用户drop 修改用户密码 找回root密码 数据库用户授权 授予权限 查看用户权限  撤销用户权限

    2024年02月11日
    浏览(47)
  • MySQL-03.用户管理和权限管理

    MySQL用户可以分为 普通用户 和 root用户 。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限。普通用户只拥有被授予的各种权限。 MySQL提供了很多语句用来管理用户账号 ,这些语句可以用来管理包括登录和退出MySQL服务器,创建用

    2024年03月17日
    浏览(47)
  • MySQL 基础知识(十)之 MySQL 架构

    目录 1 MySQL 架构说明 2 连接层 3 核心业务层 3.1 查询缓存 3.2 解析器 3.3 优化器 3.4 执行器 4 存储引擎层 5 参考文档 1 MySQL 架构说明 下图是 MySQL 5.7 及其之前版本的逻辑架构示意图 MySQL 架构大致可分为以下三层: 连接层:负责跟客户端建立连接、获取权限、维持和管理连接 核

    2024年02月20日
    浏览(46)
  • mysql(三)用户权限管理

    目录 前言 一、概述 二、用户权限类型 三、用户赋权 四、权限删除 五、删除用户  为什么要设置用户权限? MySQL设置用户管理权限的主要目的是为了确保数据库的安全性和数据的机密性。以下是一些原因: 1. 安全性:MySQL是一个开源的关系型数据库管理系统,通过设置用户

    2024年02月15日
    浏览(39)
  • MySQL基础(三十二)事务基础知识

    1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 能看出在 MySQL 中,只有InnoDB 是支持事务的。 1.2 基本概念 事务 :一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理的原则 :保证所有事务都

    2024年02月05日
    浏览(42)
  • 【MySQL】基础知识(二)

    衔接上文 MySQL基础知识(一),我们已经了解以下相关知识。 一个数据库服务器上,可以把很多有业务联系上的表放到一起,构成了一个逻辑上的“数据集合”,称为数据库。 数据库操作: 创建数据库 查看数据库 选中指定的数据库 删除数据库 那么下面我们继续来聊,MySQL的基

    2024年02月10日
    浏览(39)
  • MySQL的基础知识

    数据: 描述事物符号记录。(包括数字、文字、图形、图像、声音、档案记录等)以记录形式统一的格式进行存储。 程序的概念 程序=指令+数据 狭义的数据和广义数据 狭义的数据(文字和符号记录)   结构化数据:文字、数字、符号记录被称为结构化数据,有一定的结构,

    2024年04月24日
    浏览(27)
  • MySQL运维实战(2)MySQL用户和权限管理

    作者:俊达 MySQL数据库系统,拥有强大的控制系统功能,可以为不同用户分配特定的权限,这对于运维来说至关重要,因为它可以帮助管理员控制用户对数据库的访问权限。用户管理涉及创建、修改和删除数据库用户,权限管理则控制用户对数据库的访问和操作。MySQL提供了

    2024年02月03日
    浏览(51)
  • 【MySQL】数据库MySQL基础知识与操作

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详解

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包