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

登录后尝试执行非查询语句(如UPDATEDELETE)应被拒绝。

摘自:DeepSeek

posted @ 2025-05-08 23:06  Higurashi-kagome  阅读(568)  评论(0)    收藏  举报