新的MySQL安裝的安全性
來源:互聯網
上載者:User
mysql|安全|安全性 本章將討論MySQL管理員為保持MySQL正常運行所需要完成的職責。這些職責包括確保伺服器儘可能保持高效能地運行、設定使用者帳號以便客戶機能夠訪問伺服器、維護記錄檔,以及執行Database Backup。為了得到更高的效能,管理員還可以運行多個伺服器或修改服務
器的巨集指令引數。最後,由於MySQL正處於高速發展的狀態,所以管理員必須能確定何對MySQL進行升級。其他重要的管理問題將在第12章“安全性”和第13章“資料庫維護和修複”介紹。
有幾個對MySQL管理員有用的程式包括在這些章節中:
mysqladmin 執行各種各樣的管理操作。
safe_mysqld 和mysql.server 是啟動MySQL伺服器mysqld 的指令碼。
mysqldump 用於Database Backup和拷貝操作。
myisamchk 和isamchk 用於表的完整性檢查和修複操作。
有關這些程式的附加資訊,請參閱附錄E“MySQL程式參考”。
您可能因為剛剛按照附錄A “獲得和安裝軟體”一節的說明安裝了MySQL而正在閱讀本章。如果是這樣的話,則需要為MySQLroot 使用者佈建口令─對於一個新的MySQL安裝來說,伺服器正在以不安全的許可權運行著。筆者假定您已經初始化了資料目錄和包含授權表
的mysql資料庫。在UNIX 中,可通過運行mysql_install_db 指令碼來進行。在Windows 中,資料目錄和mysql資料庫通過運行伺服器分發包中的Setup 程式初始化。筆者還假定伺服器正在運行中。
當初次在機器上安裝MySQL時,mysql資料庫的授權表的初始許可權如下:
可以從本地主機中以root 進行串連,不帶任何口令。root 使用者擁有所有的許可權(其中包括系統管理權限),因此能做許多事情(順便說一句, MySQL超級使用者和UNIX 超級使用者二者都有名字root ,這一事實是巧合的。它們相互之間沒有任何關係)
匿名的訪問授予從本地主機上串連的使用者,該主機擁有名為test 的資料庫或帶有以‘t e s t _’開始的任何資料庫。匿名使用者可以利用這樣的資料庫做任何事,但沒有系統管理權限。
無論串連的使用者指定的是localhost 主機名稱還是實際的主機名稱,從本地主機到伺服器的串連都將是允許的。例如,如果伺服器在pit - viper.snake.net 上,則該主機上的客戶機能夠不使用口令而串連到該伺服器,從而可利用下列之一的語句使用test 資料庫:
% mysql-h localhost test
% mysql-h pit-viper.snake.net test
您甚至可以不用口令就以root 使用者的身份串連到MySQL,這一事實說明:初始的安裝是不安全的。因此,作為MySQL管理員最初的行動之一應該是為root 使用者佈建口令。然後,根據用來設定口令的方法,您還需要指示伺服器重新載入授權的表,使伺服器知道這些變化(在伺服器啟動時,它將這些表載入到記憶體中,並且在沒有意識到的情況下已經將它們改變。如果是這樣的話,必須明確告訴它重新讀取這些表)。
對於MySQL3.22 以上的版本,可以用mysqla d m i n 程式按如下方式設定口令,可用您選擇的口令來替代下列命令中的“ your password”:
% mysqladmin -uroot password "your password"
對於任何版本的MySQL,您都可以使用mysql程式並直接更新mysql資料庫中的使用者授權的表:
% mysql-uroot mysql mysql>UPDATE user SET Password=PASSWORD("your password")
-> WHREE User="root";
如果您有一箇舊版本的MySQL,則可使用mysql和一個UPDATE語句,這也包括Windows 的共用軟體版本。
在設定口令後,要看看是否需要通過運行下列命令指示伺服器重新載入授權的表:
% mysqladmin -uroot status
如果伺服器仍然允許不使用口令就以root 使用者身份進行串連,則應告訴它重新讀取授權的表( MySQL3.22 以上的版本還允許用mysqladmin flush.privileges 命令和F L U S H PRIVILEGES 的SQL 陳述式重新載入表):
% mysqladmin -uroot reload
在設定了root 的口令(並重新載入授權的表,如果必要的話)後,當以root 的身份串連到伺服器時,需要指定新的口令。