linux

Linux下MariaDB安全设置怎样做

小樊
44
2025-11-02 11:49:47
栏目: 云计算

1. 运行安全初始化脚本
安装MariaDB后,首要步骤是执行mysql_secure_installation脚本,它会引导完成以下关键安全设置:设置root账户密码(需符合复杂度要求)、删除匿名用户(避免未授权访问)、禁止root用户远程登录(降低远程攻击风险)、删除测试数据库(消除默认安全隐患)、重新加载权限表(使设置立即生效)。

2. 配置MariaDB绑定地址
修改MariaDB配置文件(路径通常为/etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf),找到bind-address参数,将其值从默认的0.0.0.0(监听所有网络接口)改为127.0.0.1(仅允许本地连接)。此操作可防止外部主机直接访问数据库服务,减少暴露面。

3. 强制使用强密码策略
通过配置文件开启密码复杂度验证,编辑/etc/my.cnf文件,在[mysqld]部分添加以下参数:validate_password_policy=MAXLEN=8,BYTES=4,PASSWORD_LENGTH=16,UPPERCASE=true,LOWERCASE=true,DIGITS=true,SPECIAL_CHARS=true(要求密码长度至少16位,包含大小写字母、数字和特殊字符)。重启MariaDB服务使策略生效:sudo systemctl restart mariadb

4. 设置密码过期与复杂度插件
为增强密码安全性,需配置密码过期时间和加载密码复杂度插件。在/etc/my.cnf[mysqld]部分添加:plugin-load=simple_password_check.so(加载插件)、simple_password_check_minimal_length=8(密码最小长度8位)、simple_password_check_digits=1(至少1位数字)、simple_password_check_other_characters=1(至少1位特殊字符)、default_password_lifetime=90(密码每90天过期)。重启服务后,密码将自动强制更换,降低密码泄露风险。

5. 限制远程访问权限
若需允许远程访问,应创建专用数据库用户而非使用root账户。登录MariaDB后,执行以下命令:CREATE USER 'app_user'@'192.168.1.100' IDENTIFIED BY 'StrongPassword123!'(创建仅能从192.168.1.100访问的用户)、GRANT SELECT, INSERT ON app_db.* TO 'app_user'@'192.168.1.100'(授予特定数据库的有限权限)、FLUSH PRIVILEGES(刷新权限使设置生效)。此操作可避免root账户暴露,减少潜在攻击面。

6. 配置防火墙规则
使用防火墙限制对MariaDB端口(默认3306)的访问。若使用ufw(Ubuntu),执行:sudo ufw allow from 192.168.1.100 to any port 3306(仅允许指定IP访问3306端口);若使用firewalld(CentOS),执行:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'(添加永久规则),然后sudo firewall-cmd --reload(重新加载防火墙)。防火墙可有效阻挡非法IP的连接请求。

7. 启用审计日志
开启审计日志可记录所有数据库操作,便于后续安全审计和问题排查。编辑/etc/my.cnf文件,在[mysqld]部分添加:log_output=TABLE(日志输出到表)、general_log=ON(开启通用查询日志)、slow_query_log=ON(开启慢查询日志)、long_query_time=2(慢查询阈值设为2秒)。重启MariaDB后,可通过SELECT * FROM mysql.general_log;查看日志。

0
看了该问题的人还看了