当前位置: 首页 > news >正文

【MySQL】用户管理详解

在数据库管理中,如果所有操作都使用 root 用户,不仅存在 安全隐患,也不符合最小权限原则。
因此,掌握 MySQL 用户管理与权限控制 是每个数据库管理员必须熟悉的内容。
本文将从用户创建、密码修改、权限授权与回收等方面进行详细讲解。


一、为什么要进行用户管理?

root 用户拥有最高权限,一旦泄露可能造成严重后果。
通过创建不同权限级别的用户,可以:

  • 提高系统安全性;
  • 控制不同用户对数据库资源的访问;
  • 方便运维与团队协作。

二、MySQL 用户基础

2.1 用户信息存储位置

MySQL 中的用户信息存储在系统数据库 mysqluser 中。

常见字段说明:

字段说明
host用户可登录的主机,例如 localhost 表示只能从本机登录
user用户名
authentication_string密码(经过加密存储)
*_priv用户拥有的权限,如 Select_privInsert_priv

查看用户表:

USE mysql;
SELECT host, user, authentication_string FROM user;

2.2 创建用户

语法如下:

CREATE USER '用户名'@'主机名/IP' IDENTIFIED BY '密码';

示例:

CREATE USER 'whb'@'localhost' IDENTIFIED BY '12345678';

执行后,即可在 user 表中看到新用户:

SELECT user, host, authentication_string FROM user;

⚠️ 注意:

  • MySQL 默认启用了密码安全策略,过于简单的密码可能会被拒绝。
    可通过以下语句查看密码策略:

    SHOW VARIABLES LIKE 'validate_password%';
    
  • 不建议创建可以从任意 IP 登录的用户(即 '用户名'@'%')。


2.3 删除用户

删除用户的语法:

DROP USER '用户名'@'主机名';

示例:

DROP USER 'whb'@'localhost';

⚠️ 注意:
如果只写 DROP USER 'whb';,系统默认认为 'whb'@'%',会导致删除失败。


2.4 修改用户密码

✅ 自己修改自己的密码
SET PASSWORD = PASSWORD('新密码');
✅ 管理员修改其他用户密码
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

示例:

SET PASSWORD FOR 'whb'@'localhost' = PASSWORD('87654321');

修改完成后可验证:

SELECT user, host, authentication_string FROM user;

三、数据库权限管理

MySQL 权限控制非常灵活,可以控制到 数据库级表级、甚至 字段级

3.1 权限类型

常见权限包括:

权限说明
SELECT查询数据
INSERT插入数据
UPDATE更新数据
DELETE删除数据
CREATE创建表或数据库
DROP删除表或数据库
ALL PRIVILEGES拥有所有权限

3.2 授权给用户

语法:

GRANT 权限列表 ON.对象名 TO '用户名'@'主机名' [IDENTIFIED BY '密码'];

说明:

  • *.* 表示所有数据库的所有对象;
  • 库.* 表示某个数据库下的所有表;
  • identified by 可选,用于同时创建或更新用户。
示例:授予 whbtest 数据库的查询权限
GRANT SELECT ON test.* TO 'whb'@'localhost';

授权后,用 whb 登录即可查询 test 数据库中的表:

SHOW DATABASES;
USE test;
SHOW TABLES;
SELECT * FROM account;

但尝试删除数据时会提示无权限:

DELETE FROM account;
-- ERROR 1142 (42000): DELETE command denied to user 'whb'@'localhost' for table 'account'
查看当前用户权限
SHOW GRANTS FOR 'whb'@'localhost';

结果示例:

GRANT USAGE ON *.* TO 'whb'@'localhost';
GRANT SELECT ON `test`.* TO 'whb'@'localhost';

3.3 回收权限

语法:

REVOKE 权限列表 ON.对象名 FROM '用户名'@'主机名';

示例:回收 whbtest 数据库的所有权限:

REVOKE ALL ON test.* FROM 'whb'@'localhost';

刷新权限立即生效:

FLUSH PRIVILEGES;

四、综合示例:完整用户权限流程

操作SQL 示例
创建用户CREATE USER 'whb'@'localhost' IDENTIFIED BY '12345678';
授权GRANT SELECT ON test.* TO 'whb'@'localhost';
查看权限SHOW GRANTS FOR 'whb'@'localhost';
修改密码SET PASSWORD FOR 'whb'@'localhost' = PASSWORD('87654321');
回收权限REVOKE ALL ON test.* FROM 'whb'@'localhost';
删除用户DROP USER 'whb'@'localhost';

五、总结与建议

要点建议
安全性避免使用 root 执行日常操作
最小权限原则每个用户只授予必要权限
密码复杂度符合 MySQL 的安全策略要求
权限管理定期检查并清理无用用户或权限
备份修改前建议备份用户与权限表
http://www.dtcms.com/a/540674.html

相关文章:

  • 怎么制作手机网站金坛区建设工程质量监督网站
  • 企业网站的布局类型怎样免费建设免费网站
  • Unity UGC IDE实现深度解析(一):节点图的核心架构设计
  • h5游戏免费下载:搭汉堡
  • 中外商贸网站建设网站怎样做权重
  • 做雇主品牌的网站logo设计网页
  • RocketMQ核心技术精讲-----详解消息发送样例
  • 解锁 PySpark SQL 的强大功能:有关 App Store 数据的端到端教程
  • MousePlus(鼠标增强工具) 中文绿色版
  • 源码学习:MyBatis源码深度解析与实战
  • RAG项目中知识库的检索优化
  • Java IO 流之转换流:InputStreamReader/OutputStreamWriter(字节与字符的桥梁)
  • 熊掌号做网站推广的注意事项品牌网页
  • shell脚本curl命令发送钉钉通知(加签方式)——筑梦之路
  • [无人机sdk] AdvancedSensing | 获取实时视频流 | VGA分辨率
  • 海康相机通过透明通道控制串口收发数据
  • 建网站科技公司做校服的网站
  • 设计模式简介
  • PyTorch torch.unique() 基础与实战
  • 【图像处理基石】图像滤镜的算法原理:从基础到进阶的技术解析
  • 信宜网站建设网站开发配置表格
  • 提示词(Prompt)——指令型提示词在大模型中的调用(以 Qwen 模型为例)
  • python-88-实时消费kafka数据批量追加写入CSV文件
  • 提示词(Prompt)——链式思维提示词(Chain-of-Thought Prompting)在大模型中的调用(以 Qwen 模型为例)
  • 用三个面中心点求解长方体位姿:从几何直觉到线性代数实现
  • 网站备案ip查询网站做网站首页ps分辨率多少
  • 免费建一级域名网站千锋教育广州校区
  • CSS3属性(三)
  • 开源底盘+机械臂机器人:Lekiwi驱动链路分析
  • 通过 useEventBus 和 useEventCallBack 实现与原生 Android、鸿蒙、iOS 的事件交互