博客
关于我
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
阅读量:792 次
发布时间:2023-02-11

本文共 2934 字,大约阅读时间需要 9 分钟。

MySQL数据库权限管理指南

前言

在数据库管理中,权限分配是保障系统安全的重要环节。MySQL数据库权限管理允许管理员根据需求对不同用户分配特定权限,而不是为所有用户分配root级别的权限。通过合理分配权限,可以最大限度地保障数据库安全,同时提升用户体验。

1. 授予权限

授予权限是数据库管理员的重要任务。MySQL提供了GRANT命令来分配权限,支持在数据库、表、列甚至存储过程级别授予权限。以下是GRANT命令的基本用法:

GRANT privileges ON database.table TO 'username'@'host';

参数说明

  • privileges:需要授予的权限列表,支持多个权限用逗号分隔。
  • database:目标数据库名称,可以使用*表示所有数据库。
  • table:目标表名称,也可以使用*表示所有表。
  • 'username'@'host':用户及其允许连接的主机地址。

常见权限类型

以下是MySQL数据库中常见的权限类型及其说明:

杁别名称 说明
ALL PRIVILEGES 授予用户所有权限。
SELECT 允许用户执行SELECT查询。
INSERT 允许用户插入数据。
UPDATE 允许用户更新数据。
DELETE 允许用户删除数据。
CREATE 允许用户创建新数据库或表。
DROP 允许用户删除数据库或表。
GRANT OPTION 允许用户将自己拥有的权限授予其他用户。
RELOAD 允许用户执行FLUSH命令,刷新表、日志等。
SHUTDOWN 允许用户关闭MySQL服务器。
PROCESS 允许用户查看当前MySQL服务器的线程信息。
FILE 允许用户读写服务器上的文件。
REFERENCES 允许用户创建外键。
INDEX 允许用户创建和删除索引。
ALTER 允许用户修改表结构。
SHOW DATABASES 允许用户执行SHOW DATABASES查看所有数据库。
SUPER 允许用户执行超级用户操作,如设置全局变量、停止复制等。
CREATE TEMPORARY TABLES 允许用户创建临时表。
LOCK TABLES 允许用户使用LOCK TABLES命令。
EXECUTE 允许用户执行存储过程。
REPLICATION SLAVE 允许用户作为复制从服务器连接。
REPLICATION CLIENT 允许用户查询主从复制服务器信息。
CREATE VIEW 允许用户创建视图。
SHOW VIEW 允许用户执行SHOW CREATE VIEW查看视图定义。
CREATE ROUTINE 允许用户创建存储过程和函数。
ALTER ROUTINE 允许用户修改和删除存储过程和函数。
EVENT 允许用户创建、修改和删除事件。
TRIGGER 允许用户创建和删除触发器。
CREATE USER 允许用户创建、删除和修改用户帐号。
ALTER USER 允许用户修改已有用户的属性(如密码)。

示例

# 授予多种权限:GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'user1'@'localhost';# 授予所有权限:GRANT ALL PRIVILEGES ON mydatabase.* TO 'user1'@'localhost';# 授予全局权限:GRANT CREATE, DROP ON *.* TO 'user1'@'localhost';

2. 撤销权限

撤销权限是管理数据库权限的重要操作。MySQL提供了REVOKE命令来收回用户的特定权限或所有权限。以下是REVOKE命令的基本用法:

REVOKE privileges ON database.table FROM 'username'@'host';

示例

# 收回特定权限:REVOKE SELECT, INSERT ON mydatabase.* FROM 'user1'@'localhost';# 收回所有权限:REVOKE SELECT, INSERT, UPDATE, DELETE ON mydatabase.* FROM 'user1'@'localhost';

3. 查询权限

要查看用户的权限,可以使用SHOW GRANTS命令。以下是常用的查询命令:

SHOW GRANTS FOR 'username'@'host';

查看所有权限

如果需要查看名为root的用户的权限,可以执行以下命令:

SELECT * FROM mysql.user WHERE user='root';

权限表说明

mysql.user表包含了MySQL用户的详细信息,包括权限。表中字段的含义如下:

属性 描述
Host 用户可以从哪些主机连接到MySQL服务器,例如localhost%(表示任意主机)等。
User 用户名。
Password 加密后的用户密码(从MySQL 5.7.6版本开始,改为authentication_string)。
Select_priv 是否有SELECT权限(YN)。
Insert_priv 是否有INSERT权限(YN)。
Update_priv 是否有UPDATE权限(YN)。
Delete_priv 是否有DELETE权限(YN)。
Create_priv 是否有创建数据库或表的权限(YN)。
Drop_priv 是否有删除数据库或表的权限(YN)。
Grant_priv 是否有授予权限的权限(YN)。
References_priv 是否有创建外键的权限(YN)。
Index_priv 是否有创建和删除索引的权限(YN)。
Alter_priv 是否有修改表结构的权限(YN)。
Show_databases_priv 是否有执行SHOW DATABASES的权限(YN)。
Super_priv 是否有超级用户权限(YN)。
Create_user_priv 是否有创建新用户的权限(YN)。
SSL相关字段 与SSL/TLS连接相关的信息。
查询限制字段 max_questionsmax_updates等,限制用户的操作次数。

4. Demo

以下是一个结合实际操作的示例:

步骤 1:创建用户

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password123';

步骤 2:授予用户权限

GRANT ALL PRIVILEGES ON mydatabase.* TO 'user1'@'localhost';

步骤 3:查看用户权限

SHOW GRANTS FOR 'user1'@'localhost';

步骤 4:撤销权限

REVOKE SELECT, INSERT ON mydatabase.* FROM 'user1'@'localhost';

步骤 5:再次查看权限

SHOW GRANTS FOR 'user1'@'localhost';

通过上述命令,可以实现对用户权限的精细化管理。

转载地址:http://ofbfk.baihongyu.com/

你可能感兴趣的文章
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>
Mysql 分页
查看>>
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 参数 innodb_flush_log_at_trx_commit
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
MySql 同一个列中的内容进行批量改动
查看>>
MySQL 命令和内置函数
查看>>
MySQL 和 PostgreSQL,我到底选择哪个?
查看>>