linux

MariaDB在Linux上的权限管理

小樊
36
2025-09-21 00:51:04
栏目: 云计算

MariaDB在Linux上的权限管理指南

一、权限管理前的安全初始化

在开始权限管理前,需通过mysql_secure_installation脚本完成基础安全配置,包括设置root密码、删除匿名用户、禁止root远程登录及删除测试数据库。此步骤能有效降低初始环境的安全风险。

二、用户管理:创建与权限关联

1. 创建用户

使用CREATE USER命令创建用户,语法格式为:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

示例:创建仅能从本地访问的appuser用户,密码为Password123
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'Password123';

2. 修改用户密码

使用ALTER USER命令修改用户密码,语法格式为:
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
示例:将appuser的密码修改为NewPassword456
ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'NewPassword456';

3. 删除用户

使用DROP USER命令删除用户,语法格式为:
DROP USER 'username'@'host';
示例:删除appuser用户:
DROP USER 'appuser'@'localhost';

三、权限分配:最小权限原则

权限分配是权限管理的核心,需遵循最小必要权限原则(仅授予用户完成工作所需的最低权限),避免过度授权。

1. 授予权限

使用GRANT命令授予权限,语法格式为:
GRANT privilege_type ON database_name.table_name TO 'username'@'host';

常见场景示例

2. 刷新权限

执行GRANT命令后,需使用FLUSH PRIVILEGES;命令使权限更改立即生效(MariaDB 10.4及以上版本会自动刷新,但显式执行更安全)。

3. 撤销权限

使用REVOKE命令撤销已授予的权限,语法格式与GRANT类似:
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
示例:撤销appusermydatabase数据库的所有权限:
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'appuser'@'localhost';

四、安全加固:权限管理的延伸

1. 禁止root远程登录

修改root用户的访问主机为localhost,防止远程攻击:
ALTER USER 'root'@'%' DISABLE;
或通过配置文件(/etc/my.cnf)设置bind-address = 127.0.0.1,限制MariaDB仅监听本地连接。

2. 限制数据目录权限

MariaDB的数据目录(通常为/var/lib/mysql)需设置为仅mysql用户可访问,避免其他用户篡改数据:

sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 700 /var/lib/mysql

3. 使用防火墙限制访问

通过防火墙(如firewalldiptables)限制MariaDB默认端口(3306)的访问,仅允许可信IP地址连接:

# 允许192.168.1.0/24网段访问3306端口
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept' --permanent
sudo firewall-cmd --reload

4. 启用SSL/TLS加密

通过SSL/TLS加密客户端与服务器之间的通信,防止数据泄露。需在/etc/my.cnf中配置证书路径,并启用加密:

[mysqld]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
require_secure_transport = ON  # MariaDB 10.3及以上版本支持

五、权限管理与审计

1. 查看用户权限

使用SHOW GRANTS命令查看用户的权限信息:
SHOW GRANTS FOR 'username'@'host';
示例:查看appuser的权限:
SHOW GRANTS FOR 'appuser'@'localhost';

2. 定期审计权限

定期检查数据库用户及权限,删除闲置用户,调整过度授权:

-- 查看所有用户
SELECT User, Host FROM mysql.user;
-- 查看用户权限详情
SELECT * FROM mysql.db WHERE User='appuser';

通过以上步骤,可实现MariaDB在Linux环境下的精细化权限管理,兼顾安全性与可用性。

0
看了该问题的人还看了