文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  NDB叢集與MySQL安全性程序

25.6.21.3 NDB叢集與MySQL安全性程序

在本節中,我們將討論MySQL標準安全性程序,因為它們適用於執行NDB叢集。

一般而言,任何安全執行MySQL的標準程序也適用於將MySQL伺服器作為NDB叢集的一部分執行。首先,您應該始終以mysql作業系統使用者的身分執行MySQL伺服器;這與在標準(非叢集)環境中執行MySQL沒有區別。mysql系統帳戶應該是唯一且明確定義的。幸運的是,這是新安裝MySQL的預設行為。您可以使用如下所示的系統命令,驗證mysqld處理序是否以mysql作業系統使用者身分執行

$> ps aux | grep mysql
root     10467  0.0  0.1   3616  1380 pts/3    S    11:53   0:00 \
  /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186
mysql    10512  0.2  2.5  58528 26636 pts/3    Sl   11:53   0:00 \
  /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql \
  --datadir=/usr/local/mysql/var --user=mysql --ndbcluster \
  --ndb-connectstring=localhost:1186 --pid-file=/usr/local/mysql/var/mothra.pid \
  --log-error=/usr/local/mysql/var/mothra.err
jon      10579  0.0  0.0   2736   688 pts/0    S+   11:54   0:00 grep mysql

如果mysqld處理序是以mysql以外的任何其他使用者身分執行,您應該立即將其關閉並以mysql使用者身分重新啟動。如果此使用者在系統上不存在,則應建立mysql使用者帳戶,並且此使用者應為mysql使用者群組的一部分;在這種情況下,您也應該確保此系統上的MySQL資料目錄(使用--datadir選項為mysqld設定)由mysql使用者擁有,並且SQL節點的my.cnf檔案在[mysqld]區段中包含user=mysql。或者,您可以使用命令列上的--user=mysql來啟動MySQL伺服器處理序,但最好使用my.cnf選項,因為您可能會忘記使用命令列選項,因此可能會在無意中讓mysqld以其他使用者身分執行。mysqld_safe啟動腳本會強制MySQL以mysql使用者身分執行。

重要事項

切勿以系統root使用者身分執行mysqld。這樣做表示MySQL可能會讀取系統上的任何檔案,因此,如果MySQL受到入侵,攻擊者也可能會讀取這些檔案。

如上一節所述(請參閱第 25.6.21.2 節,〈NDB叢集與MySQL權限〉),您應在MySQL伺服器執行後立即為其設定root密碼。您也應該刪除預設安裝的匿名使用者帳戶。您可以使用以下陳述式來完成這些工作

$> mysql -u root

mysql> UPDATE mysql.user
    ->     SET Password=PASSWORD('secure_password')
    ->     WHERE User='root';

mysql> DELETE FROM mysql.user
    ->     WHERE User='';

mysql> FLUSH PRIVILEGES;

執行DELETE陳述式時,請非常小心,不要省略WHERE子句,否則您可能會刪除所有MySQL使用者。修改mysql.user表格後,請務必立即執行FLUSH PRIVILEGES陳述式,以便變更立即生效。如果沒有FLUSH PRIVILEGES,變更將在伺服器下次重新啟動時才會生效。

注意

許多NDB叢集公用程式(例如ndb_show_tablesndb_descndb_select_all)也可以在沒有驗證的情況下工作,並且可以顯示表格名稱、綱要和資料。依預設,這些程式安裝在Unix樣式系統上,權限為wxr-xr-x (755),這表示任何可以存取mysql/bin目錄的使用者都可以執行它們。

如需這些公用程式的詳細資訊,請參閱第 25.5 節,〈NDB叢集程式〉