Unix上的MySQL,管理員帳戶是否應該加入作業系統“mysql”組?
當我通過 Yum 安裝 MySQL 時,它會自動創建
mysql
作業系統使用者和組。然後mysqld
以mysql
(而不是以 root 身份)執行,並且數據目錄中的所有文件都歸mysql:mysql
.這顯然是正確的安全做法,我理解為什麼會發生這種情況並且不想破壞它。
當我管理 MySQL 系統時,我剛剛養成了
sudo
在需要與受保護文件互動時使用的習慣(例如,使用 讀取二進制日誌mysqlbinlog
、創建備份 tarball 等)。將我的作業系統使用者添加到 mysql 組也可以嗎?有沒有我沒有考慮到的主要缺點?
當使用 mysqlbinlog 從 MySQL 導出作業資訊時,使用 sudo 對我來說也很方便,因為它通常用於修復或排除故障,而且時間是一個問題。
如果您打算重新導入從 MySQL 提取的數據,那麼您需要在某個時候解決權限問題。使用 root 帳戶創建轉儲文件時,創建的文件假定 MySQL 可能難以訪問這些文件的 root 帳戶的權限。(我也避免將粘性權限作為一種解決方法,因為當您不定期處理它時它會變得混亂)
我可能會建議:
- 將您的作業系統帳戶添加到 mysql 組,因為如果您的職責包括在該伺服器上管理/故障排除 MySQL,則可以方便地查看 MySQL 數據文件夾中的文件。
- 限制可以從作業系統訪問 MySQL 數據/日誌文件的作業系統帳戶,以降低對數據的暴露程度。
- 開發人員不需要訪問作業系統(假設 DB 伺服器在 Intranet 上保持獨立並且不包含 Web 伺服器)
- 如果您更改職責,請不要創建需要您的帳戶保留的文件/腳本。(即,如果我正在管理您的一台數據庫伺服器,我不應該在您的帳戶下找到自動腳本。)
對於正常管理任務,我傾向於創建單獨的作業系統“服務”帳戶來與 mysql 組中的 MySQL 互動,而不是使用我的本地帳戶。
如果您查看正在執行的程序(ps -ef | grep mysql),您應該看到 MySQL 由 root 帳戶(mysqld_safe )初始化,該帳戶(如您所述)在 mysql 帳戶下執行 MySQL 守護程序(mysqld )。
使用相同的方法,我傾向於創建可以使用 root 權限執行的腳本,這些腳本以具有較少權限的特定使用者身份呼叫和執行 linux shell 中的另一個文件。這也使得將相同的腳本添加到根 crontab 變得更加容易。
我首先創建一個名為“mysqlbackup”的服務帳戶,然後在主目錄中添加一個文件**.my.cnf**
/——–文件內容
$$ client $$ 使用者 = 作業系統備份
密碼 = 12345
——/
創建由“root”執行的管理腳本,該腳本從 shell 執行另一個文件
- 文件: /var/lib/scripts/run-db-backup.sh (chmod 700 & chown root:root)
- 文件包含: su -l mysqlbackup -c /var/lib/scripts/db-backup.sh
創建您的“真實”腳本以作為作業系統使用者“ mysqlbackup ”執行
- 文件: /var/lib/scripts/db-backup.sql (chmod 700 & chown mysqlbackup:mysql)