使用命令選項連接到MySQL服務器(參考MySQL官方文檔)
本文介紹如何使用命令行選項為MySQL或mysqldump等客戶端指定如何建立到MySQL服務器的連接。
客戶端程序要連接到MySQL服務器,必須使用正確的連接參數,例如服務器運行的主機名和MySQL帳戶的用戶名和密碼。
每個連接參數都有一個默認值,但可以根據需要使用在命令行或選項文件中指定的程序選項覆蓋默認值。
這里的示例使用mysql客戶機程序,但原則適用於其他客戶機,如
mysqldump, mysqladmin, or mysqlshow.
此命令調用mysql而不指定任何顯式連接參數:
mysql
由於沒有參數選項,因此應用默認值:
•默認主機名為localhost。在Unix上,這有一個特殊的含義,如后文所述。
•默認用戶名是Windows上的ODBC或Unix上的Unix登錄名。
•不發送密碼,因為既不提供--password也不提供-p。
•對於mysql,第一個nonoption參數將作為默認數據庫的名稱。因為沒有這樣的參數,所以mysql不選擇默認數據庫。
要顯式指定主機名和用戶名以及密碼,請在命令行上提供適當的選項。若要選擇默認數據庫,請添加數據庫名稱參數。示例:
1 mysql --host=localhost --user=myname --password=password mydb 2 mysql -h localhost -u myname -ppassword mydb
對於密碼選項,密碼值是可選的:
•如果使用--password或-p選項並指定密碼值,則在--password=或-p及其后面的密碼。
•如果使用--password或-p但未指定密碼值,則客戶端程序會提示您輸入密碼。輸入密碼時不顯示密碼。
這比在命令行上提供密碼更安全,這可能會使系統中的其他用戶通過執行ps等命令來查看密碼行
•要顯式指定沒有密碼,並且客戶端程序不應提示輸入密碼,請使用--skip password選項。
如前所述,在命令行中包含密碼值可能會帶來安全風險。若要避免此風險,請指定--password或-p選項,而不指定以下任何密碼值:
1 mysql --host=localhost --user=myname --password mydb 2 mysql -h localhost -u myname -p mydb
當--password或-p選項沒有密碼值時,客戶機程序會打印一個提示並等待您輸入密碼。(在這些示例中,mydb不被解釋為密碼,因為它與前面的密碼選項用空格分隔。)
在某些系統上,MySQL用來提示輸入密碼的庫例程會自動將密碼限制為8個字符。這個限制是系統庫的屬性,而不是MySQL。
在內部,MySQL對密碼的長度沒有任何限制。另一種解決方法是將MySQL密碼更改為包含8個或更少字符的值,但這可能是不可接受的,因為較短的密碼往往不太安全。
客戶端程序確定要建立的連接類型,如下所示:
•如果未指定主機或主機為本地主機,則會發生到本地主機的連接:
•在Windows上,如果服務器是用
已啟用共享內存系統變量以支持共享內存連接。
•在Unix上,MySQL程序特別對待主機名localhost,其方式可能不同於其他基於網絡的程序:客戶端使用Unix套接字文件進行連接。--socket選項或MYSQL_UNIX_PORT環境變量可用於指定套接字名稱。
•在Windows上,如果主機是。(句點),或者TCP/IP未啟用並且--未指定套接字或主機為空,如果服務器是使用命名管道啟動的,則客戶端使用命名管道連接
已啟用系統變量以支持命名管道連接。如果不支持命名管道連接,或者進行連接的用戶不是由命名管道完全訪問組系統變量指定的Windows組的成員,則會發生錯誤。
•否則,連接使用TCP/IP。
--protocol選項允許您建立特定類型的連接,即使其他選項通常會導致使用不同的協議。也就是說,-protocol顯式指定連接協議並重寫前面的規則,即使對於localhost也是如此。
僅使用或選中與所選協議相關的連接選項。其他連接選項將被忽略。例如,在Unix上使用--host=localhost時,客戶端嘗試使用Unix套接字文件連接到本地服務器。即使給定了--port或-P選項來指定端口號,也會發生這種情況。
要確保客戶端與本地服務器建立TCP/IP連接,請使用--host或-h指定主機名值127.0.0.1,或本地服務器的IP地址或名稱。您還可以使用--protocol=TCP選項顯式地指定連接協議,即使對於localhost也是如此。示例:
1 mysql --host=127.0.0.1 2 mysql --protocol=TCP
如果服務器配置為接受IPv6連接,則客戶端可以使用--host=::1通過IPv6連接到本地服務器。
在Windows上,可以通過指定--pipe或--protocol=PIPE選項,或通過指定。(句點)作為主機名。
如果服務器啟動時未啟用支持命名管道連接的命名管道系統變量,或者進行連接的用戶不是由命名管道完全訪問組系統變量指定的Windows組的成員,則會發生錯誤。
如果不想使用默認管道名稱,請使用--socket選項指定管道的名稱。
到遠程服務器的連接使用TCP/IP。此命令連接到運行使用默認端口號(3306)的remote.example.com:
mysql --host=remote.example.com
要顯式指定端口號,請使用--port或-P選項:
1 mysql --host=remote.example.com --port=13306
您也可以為到本地服務器的連接指定端口號。但是,如前所述,到Unix上本地主機的連接在默認情況下使用套接字文件,因此除非如前所述強制進行TCP/IP連接,否則將忽略指定端口號的任何選項。
對於此命令,程序在Unix上使用套接字文件,並忽略--port選項:
1 mysql --port=13306 --host=localhost
要使用端口號,請強制TCP/IP連接。例如,通過以下任一方式調用程序:
1 mysql --port=13306 --host=127.0.0.1 2 mysql --port=13306 --protocol=TCP
•在選項文件的[client]部分指定連接參數。文件的相關部分可能如下所示:
1 [client] 2 host=host_name 3 user=user_name 4 password=password
2、連接壓縮控制
到服務器的連接可以使用壓縮協議來減少通過連接發送的字節數。默認情況下,連接是未壓縮的,但如果服務器和客戶端都支持壓縮,則可以壓縮連接。
壓縮連接源於客戶端,但會影響客戶端和服務器端的CPU負載,因為雙方都執行壓縮和解壓縮操作。
由於啟用壓縮會降低性能,因此其好處主要出現在網絡帶寬較低的情況下,網絡傳輸時間控制壓縮和解壓縮操作的成本,並且結果集很大。
壓縮控制應用於客戶端程序和參與主/從復制的服務器到服務器的連接。壓縮控制不適用於組復制連接、X協議連接或聯合表的連接。
這些配置參數可用於控制連接壓縮:
•客戶機程序支持一個--compress命令行選項來指定到服務器的連接使用壓縮。
•對於使用MySQL C API的程序,函數的作用是:指定服務器連接的壓縮方式。
•對於主/服務器復制,啟用slave_compressed_protocol系統變量指定對主服務器的從連接使用壓縮。
在每種情況下,當指定使用壓縮時,如果雙方都支持,則連接使用zlib壓縮算法,否則將回退到未壓縮的連接。
3、設置環境變量
可以在命令提示符處設置環境變量以影響命令處理器的當前調用,也可以永久設置環境變量以影響將來的調用。
要永久設置變量,可以在啟動文件或使用系統為此提供的接口。
要為環境變量指定值,請使用適合於命令處理器的語法。例如,在Windows上,可以設置USER變量來指定MySQL帳戶名。為此,請使用以下語法:
SET USER=your_name
Unix上的語法取決於shell。假設要使用MYSQL_TCP_port變量指定TCP/IP端口號。典型語法(如sh、ksh、bash、zsh等)如下:
MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT
第一個命令設置變量,export命令將變量導出到shell環境,以便MySQL和其他進程可以訪問其值。
對於csh和tcsh,使用setenv使shell變量對環境可用:
setenv MYSQL_TCP_PORT 3306
設置環境變量的命令可以在命令提示下執行以立即生效,但這些設置僅在注銷之前保持有效。
要使設置在每次登錄時生效,請使用系統提供的界面,或將適當的一個或多個命令放在啟動文件中,命令解釋器在每次啟動時都會讀取該文件。
在Windows上,可以使用系統控制面板(在“高級”下)設置環境變量。在Unix上,典型的shell啟動文件是.bashrc或.bash_profile(用於bash)或.tcshrc(用於tcsh)。
假設您的MySQL程序安裝在/usr/local/MySQL/bin中,並且您希望調用這些程序很容易。
為此,請將PATH環境變量的值設置為包含該目錄。例如,如果shell是bash,請將以下行添加到.bashrc文件中:
PATH=${PATH}:/usr/local/mysql/bin
bash對登錄和非登錄shell使用不同的啟動文件,因此您可能希望將設置添加到
.bashrc用於登錄shell,to.bash_profile用於非登錄shell,以確保路徑設置不變。
如果shell是tcsh,請將以下行添加到.tcshrc文件中:
setenv PATH ${PATH}:/usr/local/mysql/bin
如果在您的主目錄中不存在適當的啟動文件,則使用文本編輯器創建它。
修改路徑設置后,請在Windows上打開一個新的控制台窗口,或在Unix上再次登錄,以便該設置生效。
————————————————
聚焦技術與人文,分享干貨,共同成長更多內容請關注“數據與人”