MySQL中的一些程序:
MySQL在安裝完成的時候,一般都會包含如下程序:
在Linux系統下,通過/usr/bin目錄下,可以通過命令查看:
?以下是常用的MySQL程序:
程序名 | 作用 |
mysqld | MySQL的守護進程即MySQL服務器,mysqld是服務端的程序,需要使用mysql服務器mysqld一定要在運行狀態 |
mysql | mysql是一個客戶端程序,用于交互輸入SQL語句或批處理模式從文件執行SQL的命令行工具 |
mysqlcheck | 用于檢查,修復,分析和優化表的表客戶端工具 |
mysqldump | 將MySQL數據庫轉儲到SQL,文本或者XML文件中的客戶端 |
mysqlimport | 將文本文件導入到表的客戶端工具(備份和恢復) |
mysqladmin | 執行管理操作的客戶端,例如創建或刪除數據庫,重新加載授權表,將表刷新到磁盤以及重新打開日志文件,mysqladmin還可以用于從服務器檢索版本,進程和狀態信息 |
mysqlshow | 顯示數據庫,表,列和索引信息的客戶端 |
mysqldumpslow | 用于讀取和匯總慢速查詢日志內容的實用程序 |
mysqlbinlog | 從二進制日志中讀取SQL語句的使用程序,mysqlbinlog文件中包含的已執行SQL語句的日志,可用于從崩潰中恢復數據 |
mysqlslap | 客戶端負載工具,模擬多個客戶端同時訪問MySQL服務器,并報告每個階段的使用時間。 |
MySQL命令行客戶端:
MySQL客戶端選項:
1.指定選項的方式:
1.在MySQL后面命令行中列出選項
2.在MySQL后面指定配置文件的路徑,以便程序啟動時讀取配置文件中的選項。
3.使用環境變量中的選項
常用的選項如下:
選項--長格式 | 短格式 | 說明 |
--host | -h | --host=host_name,-h host_name 連接到指定主機上的MySQL服務 |
--post | -P | --port=port_num,-P port_num TCP/IP連接使用的端口號 |
--user | -u | --user=user_name,-u user_name 用于連接到MySQL服務器的用戶名 |
--password | -p | --password[=password],-p[password] 用于連接到MySQL服務器的密碼,可選,如果沒有給出,會提示用戶輸入。 |
--defaults-file | --defaults-file=file_name 使用指定的選項文件,如果該文件不存在,則會發生錯誤 | |
--compress | -C | 如果可能,壓縮客戶端和服務器之間傳輸的所有信息。 |
--protocol | 用于連接到服務器的傳輸協議,默認為TCP | |
--version | -V | 顯示版本信息并退出 |
--help | -? | 顯示幫助信息并退出 |
注意:如果選項的值包括空格,那么值必須包含在雙引號中。
2.在命令行中使用選項:
2.1選項應該在程序名之后給出
2.1選項以單破折號"-",或者雙破折號"--"開頭,"-"表示短格式,"--"表示長格式,例如:-?和--help
都表示MySQL程序顯示他的幫助消息。
mysql -?;
mysql --help;
?選項名稱也區分大小寫,-v和-V都是合法的,但是它們含義不同,分別表示為--verbose和--version選項的相應的縮寫形式。
varbose選項:會顯示更多的執行細節,例如SQL語句執行的狀態,結果集的元數據。
version選項:會顯示MySQL客戶端的版本號,編譯信息,發布日期等詳細內容。
?某些選項后面需要指定一個值,例如:-h 127.0.0.1或者--host=127.0.0.1,表示向客戶端程序指定MySQL服務器主機。
mysql? -h 127.0.0.1
mysql --host=127.0.0.1
?對于長格式選項,通常用=符號分隔選項名稱和值,對于帶值的短選項,選項值可以緊跟在選項之后,也可以通過空格隔開,但是對于密碼選項的短格式,如果要指定密碼,選項與值之間不能有空格。
mysql -ptest;test表示密碼,但是沒有標明具體想要訪問的數據庫
mysql -p test:這里test表示要訪問的數據庫,但沒有寫密碼。
?在命令行中,第一個不帶破折號的值被解析為要訪問的數據庫名字,所以--database一般可以省略。
我還可以mysql -u root lottery_system -p;這樣寫,有的人會問,不是說的第一個不帶破折號的值被當成數據庫嗎,為什么root沒有被當成數據庫?
其實這是因為在選項中,選項+值是一組,-u是選項,而root是它的值。這是一組。
?在選項名稱中,破折號(-)和下劃線(_)大多數情況是可以互換使用的,但前導破折號不能轉化為下劃線,例如:--skip-grant-tables和--skip_grant_tables是等價的。
對于采用數值的選項,數值后面還可以跟后綴K,M,G表示乘以1024,1024^2,1024^3。
最后再介紹一個選項:--execute(- e)選項與mysql一起使用時,表示將一個或多個sql語句發送給服務器并顯示結果。
?選項(配置)文件:
大多數的MySQL程序可以從選項文件(配置文件)中讀取啟動選項,也可以在選項文件中指定常用選項,這樣就不用每次運行程序時都在命令行中輸入他們,大部分選項文件都是純文本格式,可以使用任何文本編輯器創建。
選項--defaults-file指定自定義的配置文件路徑,客戶端程序會讀取應用許選項文件中的相關配置。
mysql是一個軟連接,指向后面那個路徑文件,但是最終的配置文件是mysql.cnf
mysql是一個客戶端-服務端的程序,它既有客戶端配置文件,也有服務端配置文件
客戶端配置文件:
服務端配置文件:?
?雖然把客戶端和服務端的配置文件都做了區分,但是我們一般不會分別在對應的配置文件中配置,而是把所有的配置文件都寫在默認的配置文件中,便于維護和管理
?上面的my.cnf就是默認配置文件,但最終配置的是mysql.cnf,如果不指定配置文件路徑,就會讀取默認的配置文件。
選項文件的加載順序:
mysql會按照下面的順序查找并讀取選項配置文件,如果不存在則需要手動創建。
在linux系統上面:
文件名 | 說明 |
/etc/my.cnf | 全局 |
/etc/mysql/my.cnf | 全局 |
$MYSQL_HOME/my.cnf | 服務器待定選項(僅限服務器) |
defaults-extra-file | 如果存在其他選項文件可以通過--defaults-extra-file選項指定 |
~/.my.cnf | 用戶特定選項 |
~/.mylogin.cnf | 用戶特定的登錄路徑選項(僅限客戶端) |
DATADIR/mysql-auto.cnf | 系統變量(僅限服務器) |
讀取順序:從上到下,最上面的最先讀取,最下面的最后讀取。
優先級:最上面的優先級最低,最下面的優先級最高,因為后面讀取的配置內容會覆蓋之前讀取的配置
--defaults-extra-file和--defaults-file這兩個有什么區別嗎?
--defaults-extra-file:在默認的搜索路徑之前,額外讀取指定的配置文件,即先讀取該參數指定的配置文件,然后讀取默認搜索路徑的配置文件。(默認搜索路徑的配置文件會覆蓋指定的配置文件的值)
--defaults-file:只讀取指定的配置文件,忽略默認搜索路徑下的所有其他配置文件
選項文件的語法:
選項文件中指定選項時,省略前兩個前導破折號,并且選擇每一行表示一個選項。
例如--quick和--host=127.0.0.1在選項文件中應表示成quick和host=127.0.0.1
選項文件中的空行會被忽略,非空行可以采取下面的任何形式:
#comment,;comment
注釋是#或;開頭,注釋可以從中間一行開始
【group】節點
設置選項的程序或者組的名稱,不區分大小寫,如果選項組名稱與程序名稱相同,則組中選項就是專門針對應用于該程序。比如【mysqld】適用于mysqld服務端的程序,【mysql】適用于mysql客戶端程序。
opt_name=value
選項名對應的值,可以只用轉義序列\b,\t,\n,\r等來表示退格符,制表符,換行符,回車符。
?【client】這個節點可以被所有客戶端程序訪問,除了mysqld,我在client節點里配置了用戶名和密碼,這樣就可以登錄mysql不用輸入密碼。還設置了編碼集
但是如果我后面又加入了【mysql】節點,那么當啟動mysql的時候,還是需要輸入密碼,因為【mysql】的節點在【client】后面才訪問,會覆蓋【client】里面的值。
在選項文件中使用!include指令可以包含其他的選項文件,例如圖里面第一二句。
后面的是一個目錄文件,但不保證目錄文件的讀取順序。