温馨提示×

mariadb在linux的权限设置

小樊
45
2025-10-03 20:59:06
栏目: 云计算

MariaDB在Linux环境中的权限设置指南

一、操作系统级权限设置

1. MariaDB服务运行用户

MariaDB需以专用低权限用户(通常为mysql)运行,避免越权访问系统资源。通过以下命令验证运行用户:

ps -ef | egrep "^mysql.*$"

正常输出应显示进程所有者为mysql

2. 关键文件与目录权限

  • 数据目录(默认/var/lib/mysql):存储数据库文件,需归属mysql:mysql,权限设为750(所有者可读写执行,组可读执行,其他用户无权限):
    sudo chown -R mysql:mysql /var/lib/mysql
    sudo chmod 750 /var/lib/mysql
    
  • 配置文件(默认/etc/mysql/my.cnf/etc/my.cnf):仅root可写,其他用户可读:
    sudo chown root:root /etc/mysql/my.cnf
    sudo chmod 644 /etc/mysql/my.cnf
    
  • 日志文件(如/var/log/mysql/mysql.log):归属mysql:mysql,权限640
    sudo chown mysql:mysql /var/log/mysql/mysql.log
    sudo chmod 640 /var/log/mysql/mysql.log
    

3. 禁用敏感功能

  • 删除匿名用户:避免未认证用户访问数据库:
    DELETE FROM mysql.user WHERE User='';
    FLUSH PRIVILEGES;
    
  • 禁止root远程登录:降低远程攻击风险,仅允许root从本地连接:
    ALTER USER 'root'@'%' DISABLE;
    
  • 删除测试数据库:测试数据库无实际用途,且可能存在安全漏洞:
    DROP DATABASE IF EXISTS test;
    

4. SELinux配置(若启用)

若系统启用SELinux,需调整策略允许MariaDB正常运行:

# 允许MariaDB访问网络端口(默认3306)
sudo setsebool -P mysql_connect_any 1
# 设置数据目录的安全上下文
sudo chcon -Rv --type=mariadb_db_t /var/lib/mysql

5. 防火墙设置

开放MariaDB默认端口(3306),仅允许可信IP访问:

sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

二、MariaDB数据库级权限管理

1. 登录MariaDB

使用root用户登录,输入密码:

mysql -u root -p

2. 用户管理

  • 创建用户:指定用户名、密码及允许连接的主机(localhost表示本地连接,%表示任意主机):
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    
  • 修改密码:更新现有用户的密码:
    ALTER USER 'username'@'localhost' IDENTIFIED BY 'NewStrongPassword456!';
    
  • 删除用户:彻底移除用户账户:
    DROP USER 'username'@'localhost';
    

3. 权限分配

  • 授予所有权限:允许用户对指定数据库进行所有操作(生产环境慎用):
    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
    
  • 授予特定权限:仅授予用户必要的权限(如查询、插入),遵循最小权限原则:
    GRANT SELECT, INSERT, UPDATE ON database_name.table_name TO 'username'@'localhost';
    
  • 授予远程访问权限:允许用户从特定IP地址访问(如192.168.1.100):
    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'192.168.1.100';
    

4. 刷新权限

执行权限变更后,需刷新使设置立即生效:

FLUSH PRIVILEGES;

5. 撤销权限

移除用户的特定权限或全部权限:

  • 撤销特定权限
    REVOKE INSERT, UPDATE ON database_name.table_name FROM 'username'@'localhost';
    
  • 撤销所有权限
    REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'localhost';
    
  • 刷新权限:
    FLUSH PRIVILEGES;
    

6. 查看权限

  • 查看用户权限:检查指定用户的权限详情:
    SHOW GRANTS FOR 'username'@'localhost';
    
  • 查看所有用户及主机:确认当前数据库中的用户及允许连接的主机:
    SELECT User, Host FROM mysql.user;
    

三、安全增强建议

  • 使用强密码:密码需包含大小写字母、数字和特殊字符,长度不少于8位。
  • 定期审查权限:每月检查一次用户权限,移除不必要的权限或闲置用户。
  • 限制远程访问:仅允许可信IP地址访问MariaDB端口(3306),避免暴露在公网。
  • 启用SSL加密:通过配置SSL证书,强制客户端使用加密连接(MariaDB 10.3及以上版本支持):
    SET GLOBAL require_secure_transport = ON;
    

0