當你想要存取一個(gè)MySQL服務(wù)器時(shí),MySQL客戶(hù)程序一般要求你指定連接參數:你想要聯(lián)接的主機、你的用戶(hù)名和你的口令。例如,mysql客戶(hù)可以象這樣啟動(dòng)(可選的參數被包括在“[”和“]”之間):
shell> mysql [-h host_name][-u user_name][-pyour_pass ]
-h, -u和-p選項的另一種形式是--host=host_name、--user=user_name和--password=your_pass。注意在-p或--password=與跟隨它后面的口令之間沒(méi)有空格。
注意:在命令行上指定一個(gè)口令是不安全的!隨后在你系統上的任何用戶(hù)可以通過(guò)打類(lèi)似這樣的命令發(fā)現你的口令:ps auxww。見(jiàn)4.15.4 選項文件。
對于命令行沒(méi)有的聯(lián)接參數,mysql使用缺省值:
localhost。 -p,則沒(méi)有提供口令。 這樣, 對一個(gè)Unix用戶(hù)joe,下列命令是等價(jià)的:
shell>mysql -h localhost -u joeshell>mysql -h localhostshell>mysql -u joeshell>mysql
其它MySQL客戶(hù)程序有同樣表現。
在Unix系統上,當你進(jìn)行一個(gè)連接時(shí),你可以指定要使用的不同的缺省值,這樣你不必每次在你調用一個(gè)客戶(hù)程序是在命令行上輸入他們。這可以有很多方法做到:
[client]小節里指定連接參數。文件的相關(guān)小節看上去可能像這樣: [client] host=host_name user=user_name password=your_pass
見(jiàn)4.15.4 選項文件。
MYSQL_HOST指定,MySQL用戶(hù)名字可用USER指定(僅對 Windows),口令可用MYSQL_PWD指定(但是這不安全,見(jiàn)下一節) 。 如果連接參數以多種方法被指定,在命令行上被指定的值優(yōu)先于在配置文件和環(huán)境變量中指定的值,而在配置文件指定的值優(yōu)先于在環(huán)境變量指定的值。
以一種暴露的可被其他用戶(hù)發(fā)現的方式指定你的口令是不妥當的。當你運行客戶(hù)程序時(shí),你可以使用下列方法指定你的口令,還有每個(gè)方法的風(fēng)險評估:
-pyour_pass或--password=your_pass的選項。這很方便但是不安全,因為你的口令對系統狀態(tài)程序(例如ps)變得可見(jiàn),它可以被其他的用戶(hù)調用來(lái)顯示命令行。(一般MySQL客戶(hù)在他們的初始化順序期間用零覆蓋命令行參數,但是仍然有一個(gè)短暫間隔時(shí)間內參數值可見(jiàn)的。) 個(gè)-p或--password選項(沒(méi)有指定your_pass值)。在這種情況下,客戶(hù)程序請求來(lái)自終端的口令: shell>mysql - u user_name - p Enter password: ********
客戶(hù)回應“*”字符到作為輸入你的口令的終端使得旁觀(guān)者不能看見(jiàn)它。因為它對其他用戶(hù)不可見(jiàn),與在命令行上指定它相比,這樣進(jìn)入你的口令更安全。然而,這個(gè)輸入一個(gè)口令的方法僅僅為你交互式運行程序是合適的。如果你想要從非交互式運行的一個(gè)腳本調用一個(gè)客戶(hù),就沒(méi)有從終端輸入入口令的機會(huì )。
[client]節列出你的口令: [client] password=your_pass
如果你在“.my.cnf”里面存儲口令,文件應該不是組或世界可讀或可寫(xiě)的。保證文件的存取模式是400或600。見(jiàn)4.15.4 選項文件。
MYSQL_PWD環(huán)境變量中存儲口令,但是這個(gè)方法必須想到是極不安全的且應該不使用。ps的某些版本包括顯示運行進(jìn)程的環(huán)境的選項;如果你設定MYSQL_PWD,你的口令將對所有人是顯而易見(jiàn)的,甚至在沒(méi)有這樣一個(gè)版本的ps系統上,假設沒(méi)有其他方法觀(guān)察到進(jìn)程環(huán)境是不明智的。 總之,最安全的方法是讓客戶(hù)程序提示口令或在一個(gè)適當保護的“.my.cnf”文件中指定口令。
聯(lián)系客服