博客
关于我
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 slow_query_log慢查询日志配置详解
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql sysbench测试安装及命令
查看>>
mysql Timestamp时间隔了8小时
查看>>
mysql tinyint 1 boolean,MySQL tinyint to boolean
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
MySQL Troubleshoting:Waiting on query cache mutex
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql VS mongoDB
查看>>
mysql vue 菜谱_Vue+MySQL实现购物车的增删改查
查看>>
mysql where中如何判断不为空
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
MySQL Workbench 数据库建模详解:从设计到实践
查看>>
MySQL Workbench 数据建模全解析:从基础到实践
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>