在MySQL中创建只读用户,核心是赋予用户SELECT权限,同时避免授予修改数据或结构的权限。操作简单且实用,适合需要保护数据安全的场景。
1. 创建只读用户并指定主机访问
使用CREATE USER语句添加新用户,并限制其从特定主机连接。例如,创建一个只能从本地访问的只读账户:
CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'secure_password';若允许从任意主机连接,可将'localhost'替换为'%':
CREATE USER 'readonly'@'%' IDENTIFIED BY 'secure_password';2. 授予数据库只读权限
使用GRANT命令为用户分配SELECT权限,确保其只能查询数据:
GRANT SELECT ON your_database.* TO 'readonly'@'localhost';若需对所有数据库设置只读,可用:
GRANT SELECT ON *.* TO 'readonly'@'localhost';注意:授予所有数据库权限时应谨慎,避免信息泄露。
3. 刷新权限并验证配置
权限变更后,执行FLUSH命令使配置立即生效:
FLUSH PRIVILEGES;登录该用户账号测试权限:
尝试执行SELECT语句,确认可以正常查询; 尝试INSERT、UPDATE、DELETE或DROP等操作,应提示“权限被拒绝”。4. 可选:限制用户资源与增强安全性
为提升安全性,可进一步限制用户的连接次数、并发连接数等:
ALTER USER 'readonly'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 100;定期审查用户权限,删除不再使用的账户,保持系统整洁。
基本上就这些。只要正确分配SELECT权限并禁止写操作,就能实现可靠的只读访问控制。
