MySQL執行包括兩部分,一部分是伺服器端程式mysqld,另外一部分則是客戶端程式mysql。只有mysqld啟動了,mysql客戶端才能與之連線。mysqld的啟動方式有4種,同樣mysql的連線方式也有4種。
mysqld的啟動方式
方式1:mysqld
mysqld是一個可執行命令,也是伺服器端程式,啟動這個程式就相當於啟動了MySQL伺服器端的程式。但這個命令不常用,常用mysqld_safe命令。
命令格式:
mysqld [OPTIONS]
如:
mysqld --defaults-file=/etc/my.cnf
檢視幫助:
mysqld --verbose --help
方式2:mysqld_safe
mysqld_safe是一個啟動指令碼,間接引用mysqld。在啟動mysqld_safe指令碼時,在啟動MySQL伺服器程式時,同時會啟動一個守護程式,作用是監控mysqld,如mysqld服務掛了後,會立即重啟一個mysqld服務。
另外,mysqld_safe啟動方式也會把執行過程的報錯日誌和其它一些診斷資訊輸出到某一個檔案中,這樣方便我們排查解決問題。這個啟動方式是最常用的方式。
命令格式:
mysqld_safe [OPTIONS] &
如:
mysqld_safe --defaults-file=/etc/my.cnf &
檢視幫助:
mysqld_safe --help
方式3:mysqld_multi
如需要在一臺主機執行多個MySQL例項,則就可以使用mysqld_multi來對不同的mysqld服務進行管理,這個啟動方式對MySQL叢集很有幫助。
命令格式:
mysqld_multi [OPTIONS] {start|reload|stop|report} [GNR,GNR,GNR...]
檢視幫助:
mysqld_multi --help
方式4:mysql.server
mysql.server也是一個啟動指令碼,它會間接的呼叫mysqld_safe,在呼叫mysql.server時在後邊指定start引數就可以啟動伺服器程式了。這個啟動方式一般是通過RPM包安裝的MySQL產生的。
mysql.server 檔案其實是一個連結檔案,它的實際檔案是 ../support-files/mysql.server
命令格式:
mysql.server start|restart|stop|status
mysql的連線方式
方式1:TCP/IP套接字
在類Unix和Windows作業系統下都可以使用,TCP/IP套接字是一個網路協議,通過MySQL伺服器啟動時監聽一個埠,客戶端啟動連線時指明MySQL伺服器的主機IP+埠即可實現連線。
此種通訊方式,MySQL伺服器和客戶端可以部署在不同主機上,也是最常用的一種連線方式。
mysql -h主機IP -P埠 -u使用者 -p
如:
mysql -h127.0.0.1 -P3306 -uroot -p
方式2:Unix套接字
僅限類Unix作業系統下使用,Unix套接字不是網路協議,只能在MySQL伺服器和客戶端在同一個主機上才能使用。
如果我們在啟動客戶端程式的時候指定的主機名為localhost,或者指定了--protocol=socket的啟動引數,那伺服器程式和客戶端程式之間就可以通過Unix域套接字檔案來進行通訊了。
MySQL伺服器程式預設監聽的Unix域套接字檔案路徑為/tmp/mysql.sock,客戶端程式也預設連線到這個Unix域套接字檔案。
1. mysql -uroot -p //預設通過socket通訊 預設localhost
2. mysql -hlocalhost -uroot -p
3. mysql -S socket檔案路徑 -uroot -p
如:
mysql -S /var/run/mysqld/mysqld.sock -uroot -p
檢視socket檔案位置:
show variables like 'socket';
方式3:命名管道
僅限類Windows作業系統下使用,只能在MySQL伺服器和客戶端在同一個主機上才能使用。
需要在啟動伺服器程式的命令中加上--enable-named-pipe引數,然後在啟動客戶端程式的命令中加入--pipe或者--protocol=pipe引數。
–enable-named-pipe=on/off;
方式4:共享記憶體
僅限類Windows作業系統下使用,只能在MySQL伺服器和客戶端在同一個主機上才能使用。
需要在啟動伺服器程式的命令中加上--shared-memory引數,在成功啟動伺服器後,共享記憶體便成為本地客戶端程式的預設連線方式,不過我們也可以在啟動客戶端程式的命令中加入--protocol=memory引數來顯式的指定使用共享記憶體進行通訊。
–shared-memory=on/off;
本作品採用《CC 協議》,轉載必須註明作者和本文連結