ubuntu

Ubuntu MariaDB权限管理技巧

小樊
45
2025-10-18 17:36:50
栏目: 云计算

Ubuntu MariaDB权限管理技巧

1. 登录MariaDB控制台

以Ubuntu系统为例,使用root用户或具有sudo权限的用户登录MariaDB:

sudo mysql -u root -p

输入密码后进入MariaDB命令行界面。

2. 用户管理:创建与删除

创建用户

使用CREATE USER语句创建用户,明确指定主机范围localhost仅本地访问,%允许远程访问):

-- 创建本地用户(仅localhost可登录)
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
-- 创建远程用户(允许指定IP访问,更安全)
CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'RemotePass456!';

避免使用%通配符开放所有远程主机,除非必要。

删除用户

使用DROP USER语句删除无用用户(需先撤销权限):

-- 删除本地用户
DROP USER 'app_user'@'localhost';
-- 删除远程用户
DROP USER 'remote_user'@'192.168.1.100';

或通过查询mysql.user表删除:

DELETE FROM mysql.user WHERE User='app_user' AND Host='localhost';
FLUSH PRIVILEGES;
```。


## 3. 权限分配:最小权限原则
### 授予权限
使用`GRANT`语句按需分配权限,**避免直接授予`ALL PRIVILEGES`**- **特定数据库权限**(推荐):  
  ```sql
  -- 授予app_user对mydb数据库的所有权限(本地访问)
  GRANT ALL PRIVILEGES ON mydb.* TO 'app_user'@'localhost';
  -- 授予remote_user对mydb数据库的SELECT/INSERT权限(远程访问)
  GRANT SELECT, INSERT ON mydb.* TO 'remote_user'@'192.168.1.100';

分配后需执行FLUSH PRIVILEGES;使更改生效。

查看权限

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

-- 查看本地用户权限
SHOW GRANTS FOR 'app_user'@'localhost';
-- 查看远程用户权限
SHOW GRANTS FOR 'remote_user'@'192.168.1.100';

或查询mysql.user表获取所有用户权限概览:

SELECT User, Host, Password FROM mysql.user;
```。  

### 撤销权限
使用`REVOKE`语句撤销特定权限,**需精确匹配授予权限的语句**:  
```sql
-- 撤销remote_user对mydb数据库的SELECT权限
REVOKE SELECT ON mydb.* FROM 'remote_user'@'192.168.1.100';
-- 撤销app_user对mydb数据库的所有权限
REVOKE ALL PRIVILEGES ON mydb.* FROM 'app_user'@'localhost';
FLUSH PRIVILEGES;
```。


## 4. 安全加固技巧
### 最小权限原则
仅授予用户完成工作所需的最低权限(如应用用户仅需`SELECT`、`INSERT`,无需`DROP`);避免使用`ALL PRIVILEGES`,降低误操作或攻击风险。  

### 强化密码策略
- 使用强密码(混合大小写字母、数字、符号,长度≥8位);  
- 设置密码过期策略(MariaDB 10.4+支持):  
  ```sql
  ALTER USER 'app_user'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

定期提醒用户更换密码。

限制远程访问

重启服务生效:sudo systemctl restart mariadb

使用角色简化管理(MariaDB 10.2+)

角色可批量管理权限,减少重复操作。

0
看了该问题的人还看了