天天看點

《MySQL DBA修煉之道》——2.5 常用指令

本節書摘來自華章出版社《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&gt; help contents</code>

退出的指令。

<code>mysql &gt; exit</code>

簡單查詢的指令。

mysql用戶端還提供了一些簡寫指令,這些簡寫指令隻能出現在指令行的中間或末尾,具體如下。

下面來看一個示例。

指令less的“-s”選項可以讓你用方向鍵進行浏覽,這對于長行的顯示很有用。其中的參數說明分别如下。

-i:搜尋時忽略大小寫,但如果搜尋的字元串中包含大寫字母,那麼這個選項不起作用。

-n:禁用行号功能,加速浏覽大檔案。

-f:如果螢幕可以顯示的話,就直接退出。

使用以下指令,不僅可以将結果輸出到螢幕上,還可以通過tee指令記錄到檔案中。

使用如下指令,會列出所有可見的資料庫。

<code>mysql&gt; show databases;</code>

切換到test資料庫時的指令如下。

<code>mysql&gt; use test</code> #如果有許多表,使用use db_name可能會比較慢,可以使用mysql –a進行加速

顯示目前資料庫的指令如下。

<code>mysql&gt; select database();</code>

建立資料庫menagerie的指令如下。

<code>mysql &gt; create database menagerie;</code>

删除資料庫的指令如下。

<code>mysql&gt; drop database if exists menagerie;</code>

建立使用者,并賦予其對menagerie庫的權限的指令如下。

<code>mysql&gt; grant select,insert,update,delete on menagerie.* to 'your_name' @ 'your_client_host';</code>

列出目前資料庫下所有表的指令如下。

<code>mysql&gt; show tables;</code>

檢視表結構的指令如下。

``mysql&gt;desc pet;

mysql&gt;show full tables; `` #多了第二列,用于顯示table_type

輸入表名、列名等資訊時,可以按tab鍵補全,“-a”可關閉這個功能。

建立表的指令如下。

插入初始化資料的指令如下。

查詢資料的指令如下。

<code>select * from shop;</code>

執行sql檔案的3種方式如下。

如果有長的螢幕輸出,可以轉儲到文本或使用more進行檢視。

表2-1針對mysql用戶端的提示給出了解釋。

表2-1 mysql用戶端的提示說明

《MySQL DBA修煉之道》——2.5 常用指令

如果輸入錯了,需要清除目前的輸入字元,可輸入c來實作。在如下示例中,少輸入了單引号,我們使用c清除所有的輸入字元,回到提示符下。

修改使用者密碼的指令如下。

<code>mysql&gt; set password for user_name@ip_address = password('1234');</code>

顯示目前連接配接、用戶端、資料庫字元集等資訊的指令如下。

<code>mysql&gt; status</code>

顯示mysql支援的排序方式的指令如下。

<code>mysql&gt; show collation;</code>

下面的指令将展示前一條指令的警告資訊。

<code>mysql&gt; show warnings;</code>

展示可用引擎的指令如下。

<code>mysql&gt; show engines;</code>

還可以使用下面的語句代替show engines,并檢查你感興趣的存儲引擎的變量值。

show指令的精确輸出将随所使用的mysql版本(和啟用的特性)的不同而有變化。第2列的值表示各特性支援的級别,如表2-2所示。

《MySQL DBA修煉之道》——2.5 常用指令

如下指令可得到表的引擎(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 &gt; db_name.sql</code>

增加壓縮功能的指令如下。

<code>mysqldump -uroot --hex-blob db_name |gzip &gt; db_name.sql.gz</code>

也可以使用如下mysql指令恢複資料。

<code>mysql &lt; db_name.sql</code>