创建只读用户需先创建用户并授予SELECT权限,如CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'password'; GRANT SELECT ON database_name.* TO 'readonly_user'@'%'; FLUSH PRIVILEGES; 可限制特定表或IP,避免赋予INSERT、UPDATE等权限,测试登录后查询正常且写操作被拒即成功。

在 MySQL 中配置只读用户,主要是通过创建一个新用户或修改现有用户权限,授予其对指定数据库或表的 SELECT 权限,同时不赋予任何写操作权限(如 INSERT、UPDATE、DELETE、DROP 等)。以下是具体操作步骤。
创建只读用户并授权
登录 MySQL 管理员账户(如 root),执行以下命令:
1. 创建用户(可选):
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'your_password';说明:创建用户名为 readonly_user,允许从任意主机连接。如果只允许本地访问,可将 '%' 改为 'localhost'。
2. 授予只读权限:
GRANT SELECT ON database_name.* TO 'readonly_user'@'%';说明:将 database_name 替换为目标数据库名,该命令授予用户对该数据库下所有表的查询权限。
3. 刷新权限:
FLUSH PRIVILEGES;确保权限立即生效。
限制用户权限范围
若需更精细控制,可针对特定表设置只读:
GRANT SELECT ON database_name.table_name TO 'readonly_user'@'%';也可批量对多个数据库授权,重复执行 GRANT 命令即可。
注意:不要执行如下赋权操作,以免破坏只读属性:
- INSERT
- UPDATE
- DELETE
- ALTER
- DROP
- CREATE
验证只读用户权限
使用新用户登录测试:
mysql -u readonly_user -p进入后尝试执行 SELECT 查询,确认可以正常读取数据;再尝试 INSERT 或 UPDATE 操作,应提示“ERROR 1142 (42000): SELECT, INSERT, UPDATE command denied”等权限拒绝信息,表示配置成功。
常见问题与建议
1. 权限未生效?检查是否执行了 FLUSH PRIVILEGES。
2. 远程无法连接?确认用户 host 是否为 % 或对应 IP,并检查 MySQL 是否绑定远程访问端口(bind-address)及防火墙设置。
3. 安全建议:避免使用弱密码,生产环境建议限制用户仅从可信 IP 登录,例如 'readonly_user'@'192.168.1.100'。
基本上就这些,配置 MySQL 只读用户核心在于精准授权,只给 SELECT,不额外开放写权限,就能有效保障数据安全。










