MySQL 创建用户并设置只读权限
1. 登录 MySQL
使用具有管理员权限的账户(如 root)登录 MySQL:
mysql -u root -p
2. 创建用户
创建用户名为readonly_user,密码为your_password的用户。根据需要选择允许连接的主机:
- 允许本地连接:
'readonly_user'@'localhost' - 允许任意远程主机连接:
'readonly_user'@'%'
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'your_password';
3. 授予只读权限
- 授予特定数据库的只读权限(例如
mydb):GRANT SELECT ON mydb.* TO 'readonly_user'@'%'; - 授予所有数据库的只读权限:
GRANT SELECT ON *.* TO 'readonly_user'@'%';
4. 刷新权限
使权限设置立即生效:
FLUSH PRIVILEGES;
5. 验证权限
查看用户的权限:
SHOW GRANTS FOR 'readonly_user'@'%';
示例完整流程
-- 创建用户(允许从任何主机连接)
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'SecurePass123!';
-- 授予 mydb 数据库的只读权限
GRANT SELECT ON mydb.* TO 'readonly_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
注意事项
- 安全性:避免使用
%主机通配符,除非确实需要远程访问。建议限制为特定 IP 或主机名。 - 权限范围:授予
*.*会给予用户对所有数据库(包括系统库)的只读权限,可能存在安全风险。 - 测试验证:使用新用户登录,尝试执行
SELECT和写操作(如INSERT),确保只读权限生效。
用户登录测试
mysql -u readonly_user -p
登录后尝试执行非查询语句(如UPDATE、DELETE)应被拒绝。
摘自:DeepSeek
浙公网安备 33010602011771号