mysql命令行中指定程序選項的規則
- 在命令名后面緊跟選項。
- 選項參量以一個和兩個破折號開始,取決於它具有短名還是長名。例如,-?和--help是指導MySQL程序顯示幫助消息的短選項和長選項。
- 選項名對大小寫敏感。-v和-V均有效,但具有不同的含義。(它們是--verbose和--version選項的短名)。
- 部分選項在選項名后面緊隨選項值。例如,-hlocalhost或--host=localhost表示客戶程序的MySQL服務器主機。選項值可以告訴程序MySQL服務器運行的主機名。
- 對於帶選項值的長選項,通過一個‘=’將選項名和值隔離開來。對於帶選項值的短選項,選項值可以緊隨選項字母后面,或者二者之間可以用一個空格隔開。(-hlocalhost和-h localhost是等效的)。
最后的規則的例外情況是指定MySQL密碼的選項。該選項的形式可以為--password=pass_val或--password。在后一種情況(未給出 密碼值),程序將提示輸入密碼。也可以給出密碼選項,短形式為-ppass_val或-p。然而,對於短形式,如果給出了 密碼值,必須緊跟在選項后面,中間不能插入空格。這樣要求的原因是如果選項后面有空格,程序沒有辦法來告知后面的參量是 密碼值還是其它某種參量。因此,下面兩個命令的含義完全不同:
shell> mysql -ptest
shell> mysql -p test
第一個命令讓mysql使用密碼test,但沒有指定默認數據庫。第二個命令讓mysql提示輸入 密碼並使用test作為默認數據庫。
連接和斷開服務器
shell> mysql -h host -u user -p
Enter password: ********
host和user分別代表MySQL服務器運行的主機名和MySQL賬戶用戶名。設置時替換為正確的值。******** 代表你的密碼;當mysql顯示Enter password:提示時輸入它。
成功地連接后,可以在mysql>提示下輸入QUIT (或\q)隨時退出:
mysql> QUIT
Bye
在Unix中,也可以按control-D鍵斷開服務器。
mysql的-e或--execute選項
對mysql偶爾有用的另一個選項是-e或--execute選項,可用來將SQL語句傳遞給服務器。該語句必須用引號引起來(單引號或雙引號)。(然而,如果想要在查詢中將值引起來,則對於查詢應使用雙引號,查詢中引用的值應使用單引號)。
當使用該選項時,語句被執行,然后mysql立即退出命令外殼。
例如,你可以用下面的命令獲得用戶賬戶列表:
shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql Enter password: ****** +------+-----------+ | User | Host | +------+-----------+ | | gigan | | root | gigan | | | localhost | | jon | localhost | | root | localhost | +------+-----------+ shell>
請注意mysql數據庫名作為一個獨立的參量傳遞。然而,相同的查詢可能已經使用mysql -u root -p -e "SELECT User,Host FROM mysql.User"從外殼中執行。
傳遞多個SQL語句,用分號隔開:
shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world Enter password: ****** +-----------+ | Name | +-----------+ | Australia | | Austria | +-----------+ +----------+ | COUNT(*) | +----------+ | 4079 | +----------+
請注意長形式(--execute)后面必須緊跟一個等號(=)。
禁用mysql自動連接
如果mysql客戶程序發送查詢時斷開與服務器的連接,它立即並自動嘗試重新連接服務器並再次發送查詢。然而,即使mysql重新連接成功,你的第1個連接也已經結束,並且以前的會話對象和設定值被丟失:包括臨時表、自動提交模式,以及用戶和會話變量。該行為很危險.
如果有必要在連接斷開時終止mysql並提示錯誤,你可以用--skip-reconnect選項啟動mysql客戶程序。
從文本文件執行SQL語句
要想實現,創建一個文本文件text_file,並包含你想要執行的語句。然后按如下所示調用mysql:
shell> mysql db_name < text_file
還可以用一個USE db_name語句啟動文本文件。在這種情況下,不需要在命令行中指定數據庫名:
shell> mysql < text_file
如果正運行mysql,可以使用source或\.命令執行SQL腳本文件:
mysql> source filename
mysql> \. filename
