top
Loading...
5.8.1.MySQL用戶名和密碼
5.8.1. MySQL用戶名和密碼

用用戶名和客戶端或主機定義MySQL賬戶,用戶可以根據這些名稱來連接服務器。賬戶也有密碼。MySQL和操作系統使用用戶名和密碼的方式有幾處區別:

·         MySQL用于鑒定目的用戶名與WindowsUnix使用的用戶名(登錄名)沒有關系。在Unix中,大多數MySQL客戶端默認試圖使用當前Unix的用戶名作為MySQL用戶名來登錄,但這樣只是為了方便。 默認值可以很容易被覆蓋,因為客戶端程序允許用-u--user選項來指定用戶名。因為這表示任何人可以試圖使用任何用戶名來連接服務器,除非所有MySQL賬戶有密碼,否則你不能使數據庫保持安全。通過為沒有密碼的賬戶指定用戶名,任何人能夠成功連接服務器。

·         MySQL用戶名最大客達16字符長。這樣可以限制MySQL服務器和客戶端之間的硬編碼,并且防止通過修改mysql數據庫中表的定義來偷竊密碼。

:應絕對不要以任何方式修改mysql數據庫中的任何表,只能運行MySQL分發中專為此目的提供的腳本。將MySQL系統表重新定義為其它方式會導致未定義的(和不支持的!)行為

操作系統用戶名與MySQL用戶名完全不相關,甚至最大長度可能不同。例如, Unix用戶名限制為8個字符。

·         MySQL密碼與登錄到你的操作系統的密碼沒有關系。不需要將你用來登錄WindowsUnix機器的密碼和你用來訪問該機器上的MySQL服務器的密碼關聯起來。

·         MySQL的加密密碼使用自己的算法。該加密算法不同于Unix登錄過程使用的算法。MySQL密碼加密與PASSWORD()SQL函數的方法相同。Unix密碼加密與ENCRYPT()SQL函數的方法相同。PASSWORD()ENCRYPT()函數的描述參見12.9.2節,“加密函數”。從版本4.1 起,MySQL使用更強的鑒定方法,同以前的版本相比可以在連接過程中提供更好的密碼保護。即使TCP/IP包被截取或mysql數據庫被捕獲也很安全。(在前面的版本中,即使密碼以加密形式保存到user表中,仍可以通過加密密碼值來連接MySQL服務器)

當安裝MySQL時,授權表裝載時有一系列初使賬戶。這些賬戶的名稱和訪問權限見2.9.3節,“使初始MySQL賬戶安全”,其中還討論了如何未這些賬戶賦予密碼。因此,你一般應使用GRANTREVOKE語句來設置、修改和移除MySQL賬戶。參見13.5.1.3節,“GRANT和REVOKE語法”。

當用命令行客戶端連接MySQL服務器時,你應為想要使用的賬戶指定用戶名和密碼:

shell> mysql --user=monty --password=guess db_name

如果你想用較短的選項,命令應為:

shell> mysql -u monty -pguess db_name

-p選項和后面的密碼值之間絕對不能有空格。參見5.7.4節,“與MySQL服務器連接”。

前面的命令包括命令行中的密碼值,會很危險。參見5.8.6節,“使你的密碼安全”。要想避免,指定--password-p選項后面不跟任何密碼值:

shell> mysql --user=monty --password db_name
shell> mysql -u monty -p db_name

然后客戶端程序輸出提示符并等待你輸入密碼。(在這些示例中,db_name并不為密碼,因為用空格將它同前面的密碼項隔離開了)

在一些系統中,MySQL用來提示輸入密碼的庫調用自動將密碼限制到8個字符。這是系統庫的問題,而不是MySQL的問題。MySQL本身并不限制密碼的長度。要解決該問題,將MySQL密碼改為8個字符和更少字符的值,或將密碼放入選項文件中。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html
北斗有巢氏 有巢氏北斗