温馨提示×

Ubuntu MySQL权限设置怎么弄

小樊
41
2025-10-05 18:18:59
栏目: 云计算

Ubuntu下MySQL权限设置详细步骤

1. 登录MySQL服务器

在Ubuntu终端中,使用root用户登录MySQL(需输入root用户的密码):

sudo mysql -u root -p

2. 创建新用户

使用CREATE USER语句创建用户,格式为'用户名'@'主机'主机决定用户可从哪些主机连接):

  • 仅本地连接(推荐用于日常管理):
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    
  • 允许远程连接(如需从其他设备访问,需谨慎使用):
    CREATE USER 'username'@'%' IDENTIFIED BY 'StrongPassword123!';
    

    注:%表示允许从任意IP连接,生产环境中建议替换为具体IP(如192.168.1.100)以提高安全性。

3. 授予权限

使用GRANT语句为用户分配权限,常见权限类型包括:

  • 所有权限(仅用于测试环境,生产环境不推荐):
    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
    
  • 特定权限(推荐用于生产环境,按需分配):
    • 只读权限(SELECT):
      GRANT SELECT ON database_name.* TO 'username'@'localhost';
      
    • 读写权限(SELECT, INSERT, UPDATE, DELETE):
      GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'username'@'localhost';
      
    • 完整数据库权限(ALL PRIVILEGES):
      GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
      
    • 全局管理权限(*.*,仅用于管理员):
      GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
      

    注:WITH GRANT OPTION允许用户将自己的权限授予其他用户(仅管理员需要)。

4. 刷新权限

执行FLUSH PRIVILEGES使权限变更立即生效:

FLUSH PRIVILEGES;

5. 查看用户权限

使用SHOW GRANTS语句验证用户权限:

SHOW GRANTS FOR 'username'@'localhost';

示例输出:

+---------------------------------------------------+
| Grants for username@localhost                     |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost'      |
| GRANT SELECT, INSERT ON `database_name`.* TO 'username'@'localhost' |
+---------------------------------------------------+

6. 修改用户密码

使用ALTER USER语句修改用户密码(需root权限):

ALTER USER 'username'@'localhost' IDENTIFIED BY 'NewStrongPassword456!';

7. 撤销权限

使用REVOKE语句撤销用户的特定权限(如撤销INSERT权限):

REVOKE INSERT ON database_name.* FROM 'username'@'localhost';
FLUSH PRIVILEGES;

8. 删除用户

使用DROP USER语句彻底删除用户(会同时移除其所有权限):

DROP USER 'username'@'localhost';

注意事项

  • 最小权限原则:仅授予用户完成任务所需的最低权限(如应用用户只需SELECT, INSERT,无需DROP)。
  • 远程访问安全:若允许远程连接,需修改MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf),将bind-address设置为0.0.0.0(允许所有IP)或具体IP,然后重启MySQL:
    sudo systemctl restart mysql
    
  • 密码强度:使用包含大小写字母、数字和特殊字符的强密码,定期更换密码。
  • 定期审计:定期使用SELECT User, Host FROM mysql.user;查看所有用户,移除不必要的用户和权限。

0