温馨提示×

Ubuntu中MySQL用户权限如何管理

小樊
37
2025-09-16 13:57:38
栏目: 云计算

Ubuntu中MySQL用户权限管理指南

一、准备工作:登录MySQL

在Ubuntu系统中,需先通过终端登录MySQL服务器。使用root用户(MySQL默认管理员)登录,命令如下:

sudo mysql -u root -p

输入root用户的密码后,进入MySQL命令行界面(显示mysql>提示符)。

二、用户账户管理

1. 创建用户

使用CREATE USER语句创建用户,需指定用户名主机(登录来源)和密码。常见场景:

  • 仅本地登录(安全推荐):
    CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    
  • 允许任意主机登录(生产环境慎用):
    CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
    
  • 同时创建多个用户:
    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'Pass1', 'user2'@'192.168.1.100' IDENTIFIED BY 'Pass2';
    

注:localhost表示本地连接,%表示允许从任何IP地址连接。

2. 删除用户

使用DROP USER语句彻底删除用户(含其权限):

DROP USER 'myuser'@'localhost';

注:删除用户前需确认该用户无正在进行的操作,避免影响业务。

3. 修改用户密码

使用ALTER USER语句修改用户密码(支持当前用户或指定用户):

  • 修改当前用户密码:
    ALTER USER USER() IDENTIFIED BY 'NewPassword456!';
    
  • 修改指定用户密码:
    ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'NewPassword456!';
    

注:MySQL 8.0及以上版本推荐使用mysql_native_password插件(默认),无需额外配置。

4. 查看用户列表

使用以下命令查看MySQL中的所有用户及对应主机:

SELECT User, Host FROM mysql.user;

注:mysql.user是MySQL的系统表,存储用户账户信息。

三、权限管理

1. 授予权限

使用GRANT语句为用户分配权限,语法结构为:

GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机' [IDENTIFIED BY '密码'];
  • 常用权限类型
    • ALL PRIVILEGES:所有权限(生产环境慎用);
    • SELECT:查询数据;
    • INSERT:插入数据;
    • UPDATE:更新数据;
    • DELETE:删除数据;
    • CREATE/DROP:创建/删除数据库/表;
    • GRANT OPTION:允许用户将自己拥有的权限授予其他用户。
  • 示例
    • 授予用户对特定数据库的所有权限:
      GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
      
    • 授予用户对特定表的查询、插入权限:
      GRANT SELECT, INSERT ON mydatabase.mytable TO 'myuser'@'localhost';
      
    • 授予用户创建数据库的权限:
      GRANT CREATE ON *.* TO 'admin'@'%';
      

注:权限生效需执行FLUSH PRIVILEGES;(见下文)。

2. 查看用户权限

使用SHOW GRANTS语句查看用户的权限详情:

SHOW GRANTS FOR 'myuser'@'localhost';

示例输出:GRANT USAGE ON *.* TO 'myuser'@'localhost'(无权限)或GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'(拥有所有权限)。

3. 撤销权限

使用REVOKE语句撤销用户的特定权限,语法与GRANT相反:

REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';
  • 示例
    • 撤销用户对特定数据库的所有权限:
      REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'myuser'@'localhost';
      
    • 撤销用户对特定表的更新权限:
      REVOKE UPDATE ON mydatabase.mytable FROM 'myuser'@'localhost';
      

注:撤销权限后需执行FLUSH PRIVILEGES;使更改生效。

4. 刷新权限

修改权限后,需执行FLUSH PRIVILEGES;命令使更改立即生效(无需重启MySQL服务):

FLUSH PRIVILEGES;

注:MySQL 8.0及以上版本中,部分操作(如GRANT/REVOKE)会自动刷新权限,但显式执行更安全。

四、安全注意事项

  1. 最小权限原则:仅授予用户完成工作所需的最小权限(如查询数据仅需SELECT,无需ALL PRIVILEGES)。
  2. 避免使用root:日常操作使用普通用户,root仅用于系统管理。
  3. 远程访问控制:若需允许远程访问,将localhost改为具体IP地址(如192.168.1.100)或%,但需配合防火墙限制访问源。
  4. 密码强度:使用包含大小写字母、数字和特殊字符的强密码,定期更换。
  5. 定期审计:使用SELECT User, Host FROM mysql.user;查看用户列表,使用SHOW GRANTS检查权限,及时删除闲置用户。

通过以上步骤,可在Ubuntu系统中高效管理MySQL用户权限,保障数据库安全。

0