2026年Linux MySQL权限管理完全指南(2026)

一、权限管理概述

MySQL权限管理是数据库安全的核心环节。

二、安装MySQL

sudo apt update
sudo apt install mysql-server -y
sudo mysql_secure_installation

三、用户管理

3.1 创建用户

CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass123!';
CREATE USER 'remote_user'@'192.168.1.%' IDENTIFIED BY 'RemotePass456!';

3.2 修改用户

ALTER USER 'app_user'@'localhost' IDENTIFIED BY 'NewPass789!';
RENAME USER 'old_user'@'localhost' TO 'new_user'@'localhost';

3.3 删除用户

DROP USER 'app_user'@'localhost';

四、权限授予

4.1 基本权限

-- 授予查询权限
GRANT SELECT ON mydb.* TO 'app_user'@'localhost';

-- 授予所有权限
GRANT ALL PRIVILEGES ON mydb.* TO 'admin'@'localhost';

FLUSH PRIVILEGES;

4.2 细粒度权限

-- 授予特定表权限
GRANT SELECT, INSERT, UPDATE ON mydb.orders TO 'app_user'@'localhost';

-- 授予列级权限
GRANT SELECT (id, name, email) ON mydb.users TO 'readonly'@'localhost';

五、权限查看

5.1 查看用户权限

SHOW GRANTS FOR 'app_user'@'localhost';
SHOW GRANTS FOR CURRENT_USER();

5.2 查看所有用户

SELECT user, host FROM mysql.user;

六、权限回收

-- 回收特定权限
REVOKE INSERT ON mydb.* FROM 'app_user'@'localhost';

-- 回收所有权限
REVOKE ALL PRIVILEGES ON *.* FROM 'app_user'@'localhost';

FLUSH PRIVILEGES;

七、角色管理

7.1 创建角色

CREATE ROLE 'readonly_role', 'readwrite_role';

GRANT SELECT ON mydb.* TO 'readonly_role';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'readwrite_role';

GRANT 'readonly_role' TO 'user1'@'localhost';
SET DEFAULT ROLE 'readonly_role' TO 'user1'@'localhost';

八、安全最佳实践

8.1 密码策略

-- 设置密码策略
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;

8.2 连接限制

-- 限制连接数
ALTER USER 'app_user'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 100;

九、常见问题

Q1:访问被拒绝?

检查用户host和权限授予。

Q2:权限不生效?

执行 FLUSH PRIVILEGES; 或重启服务。

十、总结

合理的权限管理保障数据库安全。

注:本文基于2026年Ubuntu 22.04编写

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注