本文通過演示如何使用mysql客戶程序與數據庫服務器連接。mysql(有時稱為“終端監視器”或只是“監視”)是一個交互式程序,允許你連接一個MySQL服務器,運行查詢並察看結果。mysql可以用於批模式:你預先把查詢放在一個文件中,然後告訴mysql執行文件的內容。使用mysql的兩個方法都在這裡涉及。
為了看清由mysql提供的一個選擇項目表了,用--help選項調用它:
shell> mysql --help
本章假定mysql已經被安裝在你的機器上,並且有一個MySQL服務器你可以連接。如果這不是真的,聯絡你的MySQL管理員。(如果你是管理員,你將需要請教這本手冊的其他章節。)
建立和中止與服務器的連接
1、如何使用客戶機建立連接
為了連接到服務器,從外殼程序(即從 UNIX 提示符,或從 Windows 下的 DOS 控制台)激活 mysql 程序。命令如下:
shell>mysql
又如,直接連接一個數據庫:
shell> mysql db_name
其中的“$”在本書中代表外殼程序提示符。這是 UNIX 標准提示符之一;另一個為“#”。在 Windows 下,提示符類似 “c:>”。
2、客戶機最常使用的選項:主機、用戶和密碼
為了連接服務器,當你調用mysql時,你通常將需要提供一個MySQL用戶名和很可能,一個口令。如果服務器運行在不是你登錄的一台機器上,你也將需要指定主機名。聯系你的管理員以找出你應該使用什麼連接參數進行連接(即,那個主機,用戶名字和使用的口令)。一旦你知道正確的參數,你應該能象這樣連接:
shell> mysql -h host -u user -p
Enter password: ********
********代表你的口令;當mysql顯示Enter password:提示時輸入它。
在剛開始學習 MySQL 時,大概會為其安全系統而煩惱,因為它使您難於做自己想做的事。(您必須取得創建和訪問數據庫的權限,任何時候連接到數據庫都必須給出自己的名字和口令。)但是,在您通過數據庫錄入和使用自己的記錄後,看法就會馬上改變了。這時您會很欣賞 MySQL 阻止了其他人窺視(或者更惡劣一些,破壞!)您的資料。
下面介紹選項的含義:
-h host_name(可選擇形式:--host=host_name)
希望連接的服務器主機。如果此服務器運行在與 mysql 相同的機器上,這個選項一般可省略。
-u user_name(可選擇的形式:--user=user_name)
您的 MySQL 用戶名。如果使用 UNIX 且您的 MySQL 用戶名與注冊名相同,則可以省去這個選項;mysql 將使用您的注冊名作為您的 MySQL 名。
在 Windows 下,缺省的用戶名為 ODBC。這可能不一定非常有用。可在命令行上指定一個名字,也可以通過設置 USER 變量在環境變量中設置一個缺省名。如用下列 set 命令指定 paul 的一個用戶名:
-p(可選擇的形式:--password)
這個選項告訴 mysql 提示鍵入您的 MySQL 口令。注意:可用 -pyour_password 的形式(可選擇的形式:--password=your_password)在命令行上鍵入您的口令。但是,出於安全的考慮,最好不要這樣做。選擇 -p 不跟口令告訴 mysql 在啟動時提示您鍵入口令。例如:
在看到 Enter password: 時,鍵入口令即可。(口令不會顯到屏幕,以免給別人看到。)請注意,MySQL 口令不一定必須與 UNIX 或 Windows 口令相同。
如果完全省略了 -p 選項,mysql 就認為您不需要口令,不作提示。
請注意:-h 和 -u 選項與跟在它們後面的詞有關,無論選項和後跟的詞之間是否有空格。而 -p 卻不是這樣,如果在命令行上給出口令,-p 和口令之間一定不加空格。
例如,假定我的 MySQL 用戶名和口令分別為 tom 和 secret,希望連接到在我注冊的同一機器上運行的服務器上。下面的 mysql 命令能完成這項工作:
shell>mysql –u tom -p
在我鍵入命令後,mysql 顯示 Enter password: 提示鍵入口令。然後我鍵入口令(****** 表明我鍵入了 secret)。
如果一切順利的話,mysql 顯示一串消息和一個“mysql>”提示,表示它正等待我發布查詢。完整的啟動序列如下所示:
為了連接到在其他某個機器上運行的服務器,需要用 -h 指定主機名。如果該主機為 mysql.domain.net,則相應的命令如下所示:
shell>mysql –h mysql.domain.net –u tom -p
在後面的說明 mysql 命令行的多數例子中,為簡單起見,我們打算省去 -h、-u 和 -p 選項。並且假定您將會提供任何所需的選項。
有很多設置賬號的方法,從而不必在每次運行 mysql 時都在連接參數中進行鍵入。這個問題在前面已經介紹過,你只需在選項文件中提供參數,具體請看3.2.2。您可能會希望現在就跳到該節,以便找到一些更易於連接到服務器的辦法。
3、結束會話
在建立了服務器的一個連接後,可在任何時候鍵入下列命令來結束會話:
quit exit
還可以鍵入 Control-D 來退出,至少在 UNIX 上可以這樣。
利用選項文件簡化連接
在激活 mysql 時,有可能需要指定諸如主機名、用戶名或口令這樣的連接參數。運行一個程序需要做很多輸入工作,這很快就會讓人厭煩。利用選項文件可以存儲連接參數,減少輸入工作。
例如,對於使用mysqladmin客戶機來管理數據庫,那麼你很快會厭煩每次使用這麼長的命令行:
shell>mysql –u root –p varialbles
Enter password: *********
你也許會選擇使用全局選項文件來存貯你的參數:
[mysqladmin]
#也可以用[client],為所有的客戶機存儲參數
user=root
password=yourpassword
這樣執行mysqladmin variables就不會顯示任何存儲拒絕的錯誤,並且你可以用root用戶身份維護數據庫了。
且慢,你立刻會發現,這樣做是一個很大的安全漏洞,因為任何可以讀取選項文件的用戶都可以獲得你的密碼!解決方法是,只提供password選項不提供密碼:
[mysqladmin]
user=root
password
這樣你在命令行執行時,會提示你數據密碼:
shell>mysql varialbles
Enter password: *********
但是,你不能不提供password選項,否則你還是要在命令行中提供-p選項。
利用 mysql 的輸入行編輯器