溫馨提示×

MariaDB在Linux上的權限管理

小樊
45
2025-09-21 00:51:04
欄目: 云計算

MariaDB在Linux上的權限管理指南

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

在開始權限管理前,需通過mysql_secure_installation腳本完成基礎安全配置,包括設置root密碼、刪除匿名用戶、禁止root遠程登錄及刪除測試數據庫。此步驟能有效降低初始環境的安全風險。

二、用戶管理:創建與權限關聯

1. 創建用戶

使用CREATE USER命令創建用戶,語法格式為:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

  • username:用戶名(如appuser);
  • host:允許訪問的主機(localhost表示僅本地訪問,%表示允許遠程訪問,建議根據需求限制);
  • 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';

  • privilege_type:權限類型(如SELECT、INSERT、UPDATE、DELETE等,可組合使用);
  • database_name:數據庫名(*表示所有數據庫);
  • table_name:表名(*表示該數據庫下的所有表)。

常見場景示例

  • 授予用戶對mydatabase數據庫的所有權限:
    GRANT ALL PRIVILEGES ON mydatabase.* TO 'appuser'@'localhost';
  • 授予用戶對mydatabase數據庫的查詢、插入、更新、刪除權限:
    GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'appuser'@'localhost';
  • 授予用戶全局創建數據庫權限(謹慎使用):
    GRANT CREATE ON *.* TO 'adminuser'@'localhost';

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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女