MySQL数据库安全的核心在于用户管理与权限控制。本文将全面解析用户创建、权限分配等关键操作,助您构建安全的数据库访问体系。
在生产环境或团队协作中,直接使用root账号存在极大风险。root拥有数据库的完整控制权,可能导致数据泄露或误删等严重后果。

最佳实践是:为不同角色创建专属账户,仅分配必要权限。
遵循最小权限原则能有效防范数据风险。
所有用户数据都保存在系统库mysql的user表中。
-- 切换到系统库 use mysql; -- 查看关键用户信息 select host, user, authentication_string from user;
localhost:仅限本机登录%:允许所有IP访问(生产环境慎用)*_priv:各类权限标记字段基本语法
create user '用户名'@'登录主机' identified by '密码';
具体示例
-- 创建本地登录用户whb create user 'whb'@'localhost' identified by '12345678';
密码强度不足的解决方法
-- 查看密码策略 SHOW VARIABLES LIKE 'validate_password%'; -- 调整策略(测试环境) set global validate_password_policy=0; set global validate_password_length=4;
标准语法
drop user '用户名'@'登录主机';
正确操作示例
-- 删除本地whb用户 drop user 'whb'@'localhost';
① 自主修改密码
set password=password('新密码');
② 管理员修改密码
set password for 'whb'@'localhost'=password('87654321');
MySQL提供完善的权限管理,涵盖数据库各层级操作。
主要权限一览
| 权限 | 功能 | 适用范围 |
|---|---|---|
| SELECT | 数据查询 | 表/视图 |
| INSERT | 数据插入 | 表 |
| UPDATE | 数据更新 | 表 |
| DELETE | 数据删除 | 表 |
| CREATE | 创建对象 | 库/表 |
| DROP | 删除对象 | 库/表 |
| ALTER | 修改结构 | 表 |
| INDEX | 索引管理 | 表 |
| ALL PRIVILEGES | 全部权限 | 所有对象 |
新用户需手动授权才能操作数据库。
授权语法
grant 权限列表 on 库.对象 to '用户名'@'登录主机' [identified by '密码'];
权限组合方式
grant select on ...grant select, insert on ...grant all privileges on ...授权范围选择
*.*:全局权限库名.*:指定库权限库名.表名:特定表权限操作示例
-- 授予test库查询权限 grant select on test.* to 'whb'@'localhost'; -- 授予test库全部权限 grant all privileges on test.* to 'whb'@'localhost';
-- 查询用户权限 show grants for 'whb'@'localhost';
执行刷新命令使授权立即生效:
flush privileges;
撤销权限语法
revoke 权限列表 on 库.对象 from '用户名'@'登录主机';
实际操作示例
-- 回收test库所有权限 revoke all on test.* from 'whb'@'localhost';
管理员操作
create user 'whb'@'localhost' identified by '12345678'; grant select on test.* to 'whb'@'localhost'; flush privileges;
用户验证
mysql -uwhb -p
权限测试