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

MySQL User表入门教程

一、User表概述

MySQL的user表位于mysql系统数据库中,是MySQL权限系统的核心,用于存储用户账户信息、认证方式和全局权限。通过操作此表,可实现用户创建、权限分配及安全审计。

二、User表核心字段解析

字段名作用示例值
Host用户允许连接的主机(IP/域名/通配符)localhost%192.168.1.%
User用户名rootapp_user
authentication_string加密后的密码(MySQL 8.0+)*6BB4...(哈希值)
Select_priv是否允许SELECT操作(Y/N)Y
Insert_priv是否允许INSERT操作N
Create_priv是否允许创建数据库/表Y
Grant_priv是否允许授权其他用户N

三、基础操作指南

1. 查看User表信息

-- 切换至mysql数据库
USE mysql;-- 查看表结构
DESC user;-- 查询所有用户
SELECT Host, User FROM mysql.user;-- 查看特定用户权限
SHOW GRANTS FOR 'root'@'localhost';

2. 创建用户

-- 基础语法
CREATE USER 'username'@'host' IDENTIFIED BY 'password';-- 示例1:创建本地用户(仅限本机登录)
CREATE USER 'local_admin'@'localhost' IDENTIFIED BY 'SecurePass123!';-- 示例2:创建远程用户(允许任意IP登录)
CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'RemotePass456!';

3. 授权与权限回收

-- 授予全局权限(所有数据库)
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'%';-- 授予特定数据库权限
GRANT SELECT, INSERT ON sales_db.* TO 'report_user'@'192.168.1.%';-- 回收权限
REVOKE DELETE ON sales_db.* FROM 'report_user'@'192.168.1.%';-- 刷新权限(操作后必须执行)
FLUSH PRIVILEGES;

4. 删除用户

-- 安全删除用户
DROP USER IF EXISTS 'old_user'@'localhost';-- 批量删除(示例)
DROP USER 'user1'@'%', 'user2'@'192.168.1.100';

5. 修改密码

-- 方法1:SET PASSWORD(推荐)
SET PASSWORD FOR 'app_user'@'%' = PASSWORD('NewSecurePass789!');-- 方法2:更新user表(需刷新权限)
UPDATE mysql.user SET authentication_string = PASSWORD('AnotherPass012!') 
WHERE User = 'legacy_user' AND Host = 'localhost';
FLUSH PRIVILEGES;

四、安全最佳实践

  1. 最小权限原则
    仅授予用户完成工作所需的最小权限(如SELECT/INSERT而非ALL PRIVILEGES)。

  2. 密码策略

    -- 查看当前密码策略
    SHOW VARIABLES LIKE 'validate_password%';-- 启用强密码校验(MySQL 8.0+)
    SET GLOBAL validate_password.policy = 'MEDIUM';
    
  3. 限制登录来源

    • 使用Host字段限制用户IP(如'user'@'192.168.1.100')。
    • 避免使用'%'作为主机名,除非必要。
  4. 定期审计

    -- 监控异常用户
    SELECT User, Host FROM mysql.user 
    WHERE Host NOT IN ('localhost', '127.0.0.1') 
    AND User NOT LIKE 'mysql.%';
    

五、常见问题解决

  1. 错误1045:Access denied

    • 确认用户存在:SELECT User, Host FROM mysql.user WHERE User = 'username';
    • 检查密码是否正确:ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
  2. 权限未生效

    • 执行FLUSH PRIVILEGES;后重试。
  3. 用户被锁定

    -- 解锁用户
    ALTER USER 'username'@'host' ACCOUNT UNLOCK;
    

六、进阶管理技巧

  1. 角色(Role)管理(MySQL 8.0+)

    -- 创建角色
    CREATE ROLE 'dev_role';-- 授予角色权限
    GRANT SELECT, INSERT ON app_db.* TO 'dev_role';-- 将角色赋予用户
    GRANT 'dev_role' TO 'dev_user'@'%';
    
  2. 动态权限调整

    -- 实时调整全局权限(无需刷新)
    SET GLOBAL max_connections = 200;
    

通过掌握以上内容,您可高效管理MySQL用户及权限,保障数据库安全与性能。

http://www.lryc.cn/news/618271.html

相关文章:

  • Mysql GROUP_CONCAT函数数据超长导致截取问题记录
  • 测试自动化框架全解读:为什么、类型、优势与最佳实践
  • 分布式光伏气象站:为光伏电站的 “气象感知眼”
  • 【opencv-Python学习笔记(2): 图像表示;图像通道分割;图像通道合并;图像属性】
  • 云原生应用的DevOps3(CI/CD十大安全风险、渗透场景)
  • LeetCode 2787.将一个数字表示成幂的和的方案数:经典01背包
  • 小红书笔记信息获取_实在智能RPA源码解读
  • 使用 NetBird 创建安全的私有网络,简化远程连接!
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • 从原理到实践:一文掌握Kafka的消息生产与消费
  • Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制
  • 从零部署Nacos:替代Eureka的服务注册与服务发现基础教程
  • WPS文字和Word:不只是表格,段落也可以排序
  • 文字转语音 edge_tts
  • 微内核与插件化设计思想及其在前端项目中的应用
  • PostgreSQL 范围、空间唯一性约束
  • 用 Apache Iceberg 与 Apache Spark 在 Google Cloud 打造高性能、可扩展的数据湖仓
  • Flink运行时的实现细节
  • SQL 语言分类
  • Spark 运行流程核心组件(一)作业提交
  • 数据量暴涨时,抓取架构该如何应对?
  • 开发npm包【详细教程】
  • Bevy渲染引擎核心技术深度解析:架构、体积雾与Meshlet渲染
  • C++Linux八股
  • 08--深入解析C++ list:高效操作与实现原理
  • K8S 节点初始化一键脚本(禁用 SELinux + 关闭 swap + 开启 ipvs 亲测实用)
  • 微前端架构:原理、场景与实践案例
  • 前端JS处理时间,适用于聊天、操作记录等(包含刚刚、x分钟前、x小时前、x天前)
  • Windows已经安装了一个MySQL8,通过修改配置文件的端口号跑2个或多个Mysql服务方法,并注册为系统服务
  • lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理