新的MySQL安裝的安全性
2024-07-24 12:55:25
供稿:網友
,歡迎訪問網頁設計愛好者web開發。 本章將討論mysql管理員為保持mysql正常運行所需要完成的職責。這些職責包括確保服務器盡可能保持高性能地運行、設置用戶賬號以便客戶機能夠訪問服務器、維護日志文件,以及執行數據庫備份。為了得到更高的性能,管理員還可以運行多個服務器或修改服務
器的操作參數。最后,由于mysql正處于高速發展的狀態,所以管理員必須能確定何對mysql進行升級。其他重要的管理問題將在第12章“安全性”和第13章“數據庫維護和修復”介紹。
有幾個對mysql管理員有用的程序包括在這些章節中:
mysqladmin 執行各種各樣的管理操作。
safe_mysqld 和mysql.server 是啟動mysql服務器mysqld 的腳本。
mysqldump 用于數據庫備份和拷貝操作。
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 的身份連接到服務器時,需要指定新的口令。