本節書摘來自華章出版社《mysql dba修煉之道》一書中的第2章,第2.5節,作者:陳曉勇,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
本節先介紹幾個常用指令,如mysql、mysqladmin、mysqldump的簡單用法。後續章節還會再詳述這些指令的使用。
2.5.1 使用mysql指令
首先,需要留意區分mysql的大小寫。标準的說法是,mysql指mysql伺服器,mysql指用戶端。
從unix/linux系統下發展出來的mysql有着優良的設計,客戶工具的所有選項都可以儲存到一個“~/.my.cnf”的使用者級配置檔案裡的[client]部分中,而且它把适用于mysql的選項集中在了[mysql]部分。可以先把預設的使用者名、密碼、端口等在“.my.cnf”檔案中配置好,以便簡化登入。
另外,要說明一下,本章闡述的一些指令,為了顯示友善,可能會省略使用者名、密碼、socket檔案的功能連接配接參數。
首先給出連接配接并登入資料庫時會涉及的指令,分别如下。
通過ip、端口遠端連接配接的指令。
<code>mysql -h ip_address -p your_port -u username -p</code>
通過tcp/ip協定進行本地連接配接的指令。
<code>mysql -u username -h 127.0.0.1 -p your_port</code>
通過socket檔案進行本地連接配接的指令。
<code>mysql -u username -s /path/to/mysql.sock</code>
閱讀線上幫助的指令。
<code>mysql> help contents</code>
退出的指令。
<code>mysql > exit</code>
簡單查詢的指令。
mysql用戶端還提供了一些簡寫指令,這些簡寫指令隻能出現在指令行的中間或末尾,具體如下。
下面來看一個示例。
指令less的“-s”選項可以讓你用方向鍵進行浏覽,這對于長行的顯示很有用。其中的參數說明分别如下。
-i:搜尋時忽略大小寫,但如果搜尋的字元串中包含大寫字母,那麼這個選項不起作用。
-n:禁用行号功能,加速浏覽大檔案。
-f:如果螢幕可以顯示的話,就直接退出。
使用以下指令,不僅可以将結果輸出到螢幕上,還可以通過tee指令記錄到檔案中。
使用如下指令,會列出所有可見的資料庫。
<code>mysql> show databases;</code>
切換到test資料庫時的指令如下。
<code>mysql> use test</code> #如果有許多表,使用use db_name可能會比較慢,可以使用mysql –a進行加速
顯示目前資料庫的指令如下。
<code>mysql> select database();</code>
建立資料庫menagerie的指令如下。
<code>mysql > create database menagerie;</code>
删除資料庫的指令如下。
<code>mysql> drop database if exists menagerie;</code>
建立使用者,并賦予其對menagerie庫的權限的指令如下。
<code>mysql> grant select,insert,update,delete on menagerie.* to 'your_name' @ 'your_client_host';</code>
列出目前資料庫下所有表的指令如下。
<code>mysql> show tables;</code>
檢視表結構的指令如下。
``mysql>desc pet;
mysql>show full tables; `` #多了第二列,用于顯示table_type
輸入表名、列名等資訊時,可以按tab鍵補全,“-a”可關閉這個功能。
建立表的指令如下。
插入初始化資料的指令如下。
查詢資料的指令如下。
<code>select * from shop;</code>
執行sql檔案的3種方式如下。
如果有長的螢幕輸出,可以轉儲到文本或使用more進行檢視。
表2-1針對mysql用戶端的提示給出了解釋。
表2-1 mysql用戶端的提示說明

如果輸入錯了,需要清除目前的輸入字元,可輸入c來實作。在如下示例中,少輸入了單引号,我們使用c清除所有的輸入字元,回到提示符下。
修改使用者密碼的指令如下。
<code>mysql> set password for user_name@ip_address = password('1234');</code>
顯示目前連接配接、用戶端、資料庫字元集等資訊的指令如下。
<code>mysql> status</code>
顯示mysql支援的排序方式的指令如下。
<code>mysql> show collation;</code>
下面的指令将展示前一條指令的警告資訊。
<code>mysql> show warnings;</code>
展示可用引擎的指令如下。
<code>mysql> show engines;</code>
還可以使用下面的語句代替show engines,并檢查你感興趣的存儲引擎的變量值。
show指令的精确輸出将随所使用的mysql版本(和啟用的特性)的不同而有變化。第2列的值表示各特性支援的級别,如表2-2所示。
如下指令可得到表的引擎(engine)。
如下指令可檢視目前連接配接和伺服器的事務隔離模式。
<code>select @@tx_isolation,@@global.tx_isolation;</code>
如下指令可查詢是否自動送出事務,
<code>select @@autocommit;</code>
如下指令可用于查詢sql_mode。
也可以通過設定os環境變量的方式來改變連接配接的socket檔案和tcp端口,指令如下。
2.5.2 使用mysqladmin指令
在使用mysqladmin指令時,如下指令可顯示參數設定。
<code>mysqladmin -p variables |grep log_queries_not_using_indexes</code>
設定root密碼的指令如下。
<code>myaqladmin -u root -p password "new password"</code>
如下指令可顯示狀态變量,一般使用-r參數顯示兩次指令執行期間的增量值。
<code>mysqladmin extended-status -uroot -r -i 10</code>
其中,“extended-status”顯示的是伺服器狀态變量和值。
-r:顯示目前狀态變量和上一次運作指令狀态變量的內插補點。
-i:重複執行指令的間隔時間。
如下指令可顯示目前連接配接的線程。
<code>mysqladmin -uroot -pnemo1234admin processlist</code>
如下指令可用于關閉資料庫。
<code>mysqladmin shutdown</code>
2.5.3 使用mysqldump指令
在使用mysqldump指令時,如下指令可用于備份資料庫。
<code>mysqldump -uroot --hex-blob db_name > db_name.sql</code>
增加壓縮功能的指令如下。
<code>mysqldump -uroot --hex-blob db_name |gzip > db_name.sql.gz</code>
也可以使用如下mysql指令恢複資料。
<code>mysql < db_name.sql</code>