创建只读用户并指定主机访问:使用CREATE USER语句创建用户,如'readonly'@'localhost'或'%';2. 授予数据库只读权限:通过GRANT SELECT ON指定数据库或所有数据库的查询权限;3. 刷新权限并验证:执行FLUSH PRIVILEGES后测试SELECT允许与写操作拒绝;4. 可选增强安全:用ALTER USER限制连接频率并定期清理账户。正确配置即可实现安全的只读访问控制。
在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权限并禁止写操作,就能实现可靠的只读访问控制。









