MySQL 中的經常使用工具

1、mysql (客戶端鏈接工具)

使用最頻繁的鏈接數據庫的客戶端工具,使用語法以下:mysql

mysql [options] [database]

這裏的 options 表示 mysql 的可用選項,能夠一次寫一個或者多個,甚至能夠不寫;database 表示鏈接的數據庫,一次只能寫一個或者不寫,若是不寫,鏈接成功後須要用 「use database」命令來進入要操做的數據庫。sql

1. 鏈接選項

選項的表達方式有多種,例如:shell

# 這三種方式都是能夠的
shell> mysql -u root
shell> mysql -uroot
shell> mysql -user=root

1. 鏈接選項

-u, --user=name    指定用戶名
-p, --password[=name]    指定密碼  
-h, --host=name    指定服務器 IP 或者域名  
-P, --port=#    指定鏈接端口

通常在在本地環境,爲了方便,能夠在 配置文件 my.cnf 中配置當前用戶和密碼,配置好後,直接執行 mysql 就能夠鏈接到數據庫:數據庫

[client]
user=root
password=000000
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

配置好後,直接執行 mysql 便可:安全

zj@bogon:~$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
...

登陸遠程服務器,須要指定地址和端口:服務器

shell> mysql -h 192.168.10.10 -P 3306 -uroot -p

注意: 在正式的生產環境中,爲了安全起見,通常須要建立應用帳號並賦予適當權限,而不會用 root 直接操做數據庫;默認端口(3306)通常不要使用,能夠改成任意操做系統未佔用的端口。session

2. 客戶端字符集選項

--default-character-set=charset-name

做爲服務器的字符集選項,這個選項也能夠配置在 my.cnf 的 [mysqld] 組中。一樣,做爲客戶端字符集選項,也能夠配置在 my.cnf 的 [mysql]組中,這樣每次用 mysql 工具鏈接數據庫的時候就會自動使用此客戶端字符集。固然,也能夠在 mysql 的命令行中手工指定客戶端字符集:socket

shell> mysql -u user -default-character-set=charset

至關於在 mysql 客戶端鏈接成功後執行:工具

set names charset;

3. 執行選項

-e, --execute=name        // 執行 sql 語句並退出

此選項能夠直接在 MySQL 客戶端執行 sql 語句,對於一些批處理腳本,這是方式尤爲方便:優化

zj@bogon:~$ mysql mysql -e "select user,host from user"
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| root      | 127.0.0.1 |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+

能夠按這種方式連續執行多個 sql 語句,用英文分號(;)隔開。

4. 格式化選項

-E, --vertical    將輸出方式按照字段順序豎着顯示  
-s, --silent    去掉 mysql 中的線條框顯示

「-E」 選項相似於 mysql 裏面執行 sql 語句後加 「G」, 常常和 -e 一塊兒使用。

2、myisampack (myisam 表壓縮工具)

myisampack 是一個表壓縮工具,可使用很高的壓縮率來對 myisam 存儲引擎的表進行壓縮,使得壓縮後的表佔用比壓縮前小得多的空間。可是壓縮後的表將成爲一個只讀表,不能進行 DML 操做。

3、mysqladmin(MySQL 管理工具)

mysqladmin 是一個執行管理操做的客戶端程序。能夠用它來檢查服務器的配置和當前狀態、建立並刪除數據庫等。它的功能與 mysql 客戶端很是相似,主要區別在於它更側重於一些管理方面的功能。

使用語法:

shell> mysqladmin [options] command [command-options]...

能夠執行的命令以下:

create databasename        Create a new database    新建數據庫
  debug                        Instruct server to write debug information to log     把 debug 日誌記錄到日誌文件中
  drop databasename            Delete a database and all its tables    刪除數據庫
  extended-status           Gives an extended status message from the server    查看 MySQL 服務器的狀態信息
  flush-hosts               Flush all cached hosts
  flush-logs                Flush all logs
  flush-status                Clear status variables
  flush-tables              Flush all tables
  flush-threads             Flush the thread cache
  flush-privileges          Reload grant tables (same as reload)
  kill id,id,...            Kill mysql threads
  password [new-password]   Change old password to new-password in current format
  ping                        Check if mysqld is alive
  processlist                Show list of active threads in server
  reload                    Reload grant tables
  refresh                    Flush all tables and close and open logfiles
  shutdown                    Take server down
  status                    Gives a short status message from the server
  start-slave                Start slave
  stop-slave                Stop slave
  variables                 Prints variables available
  version                    Get version info from server

舉例:

zj@bogon:/usr/local/mysql/bin$ mysqladmin -uroot -p shutdown
Enter password:

4、日誌管理工具

因爲服務器生成的二進制文件以二進制格式保存,因此若是想要檢查這些文件的文本格式,就會用到 mysqlbinlog 日誌管理工具。
用法以下:

shell> mysqlbinlog [option] log-file1 log-file2...

option 有不少選項:

  • -d,--database=name: 指定數據庫名稱,只列出指定的數據庫相關操做。
  • -o, --offset=#: 忽略日誌中的前 n 行命令。
    -r, --result-file=name: 將輸出的文本格式日誌輸出到指定文件

-s, --short-form: 顯示簡單格式,省略掉一些信息。
--start-datetime=name --stop-datetime=name: 指定日期間隔內的全部日誌。
--start-position=# --stop-position=#: 指定位置間隔內的全部日誌

1. 示例準備:建立新日誌,新建庫 t1 和 t2, 以及分別新建表 test1 和 test2

MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create table t1(id int,name varchar);
ERROR 1046 (3D000): No database selected
MySQL [(none)]> reset master;
Query OK, 0 rows affected (0.01 sec)

MySQL [(none)]> create database t1;
Query OK, 1 row affected (0.04 sec)

MySQL [(none)]> create database t2;
Query OK, 1 row affected (0.02 sec)

MySQL [(none)]> use t1;
Database changed
MySQL [t1]> create table test1(id int, name varchar(30));
Query OK, 0 rows affected (0.11 sec)

MySQL [t1]> insert into  test1 value (1,'zj');
Query OK, 1 row affected (0.14 sec)

MySQL [t1]> insert into  test1 value (2,'zj2');
Query OK, 1 row affected (0.02 sec)

MySQL [t1]> use t2;
Database changed
MySQL [t2]> create table test2(id int,name varchar(30));
Query OK, 0 rows affected (0.02 sec)

MySQL [t2]> insert into test2 select * from t1.test1;
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

MySQL [t2]> select * from t1.test1;
+------+------+
| id   | name |
+------+------+
|    1 | zj   |
|    2 | zj2  |
+------+------+
2 rows in set (0.02 sec)

MySQL [t2]> select * from test2;
+------+------+
| id   | name |
+------+------+
|    1 | zj   |
|    2 | zj2  |
+------+------+
2 rows in set (0.00 sec)

2. 不加任何參數,顯示全部日誌

注意:必須擁有訪問目標文件的權限

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001
[sudo] password for zj: 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1  end_log_pos 123 CRC32 0x42fd5a4d     Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup

......

create table test2(id int,name varchar(30))
/*!*/;
# at 1366
#170920 20:50:29 server id 1  end_log_pos 1431 CRC32 0x18a95938     Anonymous_GTID    last_committed=6    sequence_number=7
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1431
#170920 20:50:29 server id 1  end_log_pos 1509 CRC32 0x2fa8bd6c     Query    thread_id=4    exec_time=0    error_code=0
SET TIMESTAMP=1505911829/*!*/;
BEGIN
/*!*/;
# at 1509
#170920 20:50:29 server id 1  end_log_pos 1622 CRC32 0x77ce6f3b     Query    thread_id=4    exec_time=0    error_code=0
SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1  end_log_pos 1653 CRC32 0x41b7a45b     Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

3. 加 -d 選項,將只顯示 t2 數據庫的操做日誌

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -d t2
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

......

SET TIMESTAMP=1505911829/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1  end_log_pos 1653 CRC32 0x41b7a45b     Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

4. 加 -o 選項, 忽略掉前 20 行命令

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#170920 20:44:49 server id 1  end_log_pos 123 CRC32 0x42fd5a4d     Start: binlog v 4, server v 5.7.18-log created 170920 20:44:49 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
wWLCWQ8BAAAAdwAAAHsAAAABAAQANS43LjE4LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADBYsJZEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AU1a/UI=
'/*!*/;
# at 1509
#170920 20:50:29 server id 1  end_log_pos 1622 CRC32 0x77ce6f3b     Query    thread_id=4    exec_time=0    error_code=0
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=4/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
# at 1622
#170920 20:50:29 server id 1  end_log_pos 1653 CRC32 0x41b7a45b     Xid = 29
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

5. 加 -r 選項,將上面的結果輸出到文件 resultfile 中。

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -r ./logfile
zj@bogon:/usr/local/mysql/bin$ sudo more ./logfile
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
...

6. 結果顯示的內容較多,顯得比較亂,加 -s 選項將上面的內容進行簡單顯示

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001 -o 20 -s
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
use `t2`/*!*/;
SET TIMESTAMP=1505911829/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into test2 select * from t1.test1
/*!*/;
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

7. 加 「--start-datetime --stop-datetime」 選項顯示 5:00:00 ~ 5:01:00 之間的日誌

zj@bogon:/usr/local/mysql/bin$ sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001  --start-datetime="2017/09/30 05:00:00" --stop-datetime='2017/09/30 05:01:00'

開始日期和結束日期能夠只寫一個。若是隻寫開始日期,表示範圍開始日期到日誌結束;若是隻寫結束日期,表示日誌開始到指定的結束日期。

8. --start-position=# 和 --stop-position=#, 與日期範圍相似,不過能夠更精確的表示範圍。

sudo ./mysqlbinlog --no-defaults /data/mysql/mysql-bin.000001  --start-position=4 --stop-datetime=100

5、mysqlcheck (myisam 表維護工具)

mysqlcheck 工具能夠檢查和修復 myisam 表,還能夠優化和分析表。實際上,它集成了 mysql 工具中的 check、repair、analyze、optimize

有 3 種方式能夠來調用 mysqlcheck:

shell> mysqlcheck [options] db_name [tables]
shell> mysqlcheck [options] --database DB1 [DB2 DB3...]
shell> mysqlcheck [options] --all-databse

option 中有如下經常使用選項:

  • -c, --check (檢查表)
  • -r, --repair (修復表)
  • -a, --analyze (分析表)
  • -o, --optimize (優化表)

其中,默認選項是 -c (檢查表)
示例:

1. 檢查表

zj@bogon:/data/mysql$ mysqlcheck -c t2
t2.test1                                           OK
t2.test2                                           OK

2. 修復表

zj@bogon:/data/mysql$ mysqlcheck -r t2
t2.test1
note     : The storage engine for the table doesn't support repair
t2.test2                                           OK

test1 表的存儲引擎爲 innodb,不支持 repair。

3. 分析表

zj@bogon:/data/mysql$ mysqlcheck -a t2
t2.test1                                           OK
t2.test2                                           OK

4. 優化表

zj@bogon:/data/mysql$ mysqlcheck -o t2
t2.test1
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
t2.test2

6、mysqldump (數據導出工具)

mysqldump 客戶端工具用來備份數據庫或在不一樣數據庫之間進行數據遷移。備分內容包含建立表或裝載表的 sql 語句。

有三中方式來調用 mysqldump:

mysqldump [OPTIONS] database [tables]       // 備份單個數據庫或者庫中部分數據表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]      //備份指定的一個或者多個數據庫
mysqldump [OPTIONS] --all-databases [OPTIONS]       // 備份全部數據庫

1. 鏈接選項

-u, --user=name             // 指定用戶名
-p, --password[=name]       // 指定密碼  
-h, --host=name             // 指定服務器 IP 或者域名
-p, --port=#                // 指定鏈接端口

示例:

shell> mysqldump -h192.18.10.10 -p3306 -uroot -p test > test.sql

2. 輸出內容選項

--add-drop-database     每一個數據庫建立語句前加上 drop database 語句
--add-drop-table        在每一個表建立語句前加上 drop table 語句

在默認狀況下,這兩個參數都自動加上。

-n, --no-create-db      不包含數據庫的建立語句  
-t, --no-create-info    不包含數據表的建立語句
-d, --no-data           不包含數據

3. 輸出格式選項

  • --compact 選項使得輸出結果簡潔,不包括默認選項中的各類註釋。
root@bogon:/usr/local/mysql/bin# ./mysqldump --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(10) DEFAULT NULL,
  `context` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` VALUES (1,'a','a'),(2,'b','b');
  • -c 或者 --complete-insert 選項使得輸出文件中的 insert 語句包括字段名稱,默認是不包括字段名稱的。
root@bogon:/usr/local/mysql/bin# ./mysqldump -c --compact t2 emp > emp.sql
root@bogon:/usr/local/mysql/bin# more emp.sql
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(10) DEFAULT NULL,
  `context` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `emp` (`id`, `name`, `context`) VALUES (1,'a','a'),(2,'b','b');
  • -T 選項將指定數據表中的數據備份爲單純的數據文本和建表 sql 兩個文件,常常和下面幾個選項一塊兒配合使用,將數據導出爲指定格式顯示。
-T, --tab=name                  備份數據和建表語句
--fileds-terminated-by=name     域分隔符
--fileds-enclosed-by=name       域引用符
--fileds-optionally-enclosed-by=name    域可選引用符
--fileds-escaped-by=name        轉義字符

示例:將 t2 數據庫中的表 emp 導出爲單純的數據文本和建表 sql 兩個文件,並存放在當前路徑下的 bak 目錄下。

1.建立備份目錄
root@bogon:/usr/local/mysql/bin#  mkdir bak
2. 將 t2 數據庫下的表 emp 備份到 bak 目錄下
root@bogon:/usr/local/mysql/bin# ./mysqldump t2 emp -T ./bak

3. 查看 bak 目錄,發現兩個文件

root@bogon:/usr/local/mysql/bin# ls ./bak
emp.sql  emp.txt

4. 查看兩個文件的內容, .sql 結尾的是建表及插入數據的sql,.txt 結尾的是表數據

root@bogon:/usr/local/mysql/bin# more ./bak/emp.sql
-- MySQL dump 10.13  Distrib 5.7.18, for Linux (x86_64)
--
-- Host: localhost    Database: t2
-- ------------------------------------------------------
-- Server version    5.7.18-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `emp`
--

DROP TABLE IF EXISTS `emp`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(10) DEFAULT NULL,
  `context` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-09-21 12:07:38
root@bogon:/usr/local/mysql/bin# more ./bak/emp.txt 
1    a    a
2    b    b

4. 字符集選項

mysqldump 導出的數據的字符集使用的是 mysqld 啓動時的默認字符集,若是表的字符集用的不是默認字符集,導出的數據就有可能出現亂碼。因此在導出時,應該先肯定表的字符集,在導出時指定該字符集便可。

shell> mysqldump -uroot --compact --default-character-set=utf8 t2 emp > emp.sql

5. 其餘經常使用選項

  • -F --flush-logs (備份前刷新日誌)

加上此選項後,備份前將關閉就日誌,生成新日誌。使得進行恢復的時候直接重新日誌開始進行重作,大大方便了恢復過程。

  • -l --lock-tables (給全部表加讀鎖)

能夠在備份期間使用,使得數據沒法被更新,從而使備份的數據保持一致性,能夠配合 -F 選項一塊兒使用。

7、mysqlimport (數據導入工具)

mysqlimport 是客戶端數據導入工具,用來導入 mysqldump 加 -T 選項後導出的文本文件。

基本用法:

shell> mysqlimport [options] db_name textfile1

8、mysqlshow (數據庫對象查看工具)

mysqlshow 客戶端對象查找工具,用來很快的查找存在哪些數據庫,數據庫中的表、表中的列或索引,和 mysql 客戶端工具很相似,不過有些特性是 mysql 客戶端工具所不具有的。

使用方法:

shell> mysqlshow [option] [db_name [tbl_name [col_name]]]

若是不加任何選項,默認狀況下會顯示全部數據庫。

經常使用選項:

1. --count (顯示數據庫和表的統計信息)

若是不指定數據庫,則顯示每一個數據庫的名稱、表數量、記錄數量;
若是指定數據庫,則顯示指定數據庫的每一個表名、字段數量,記錄數量;
若是指定具體數據庫中的具體表,則顯示錶的字段信息。

2. -k 或者 --keys (顯示指定表中的全部索引)

此選項顯示了兩部份內容,一部分是指定表的表結構,另外一部分中是指定表的當前索引信息

3. -i 或者 --status (顯示錶的一些狀態信息)

9、perror (錯誤代碼查看工具)

在 MySQL 的使用過程當中,可能會出現各類各樣的 error。這些 error 有些是因爲操做系統引發的,好比文件或者目錄不存在;有些則是因爲存儲引擎使用不當引發的。這些 error 通常都有一個代碼,相似於 「error:#」 或者 「Errcode:#」,「#」 表明具體的錯誤號。perror 的做用就是解釋這些錯誤代碼的詳細含義:

perror [options] [errorcode [errorcode]]

zj@bogon:/usr/local/mysql/bin$ perror 30
OS error code  30:  Read-only file system
zj@bogon:/usr/local/mysql/bin$ perror 60
OS error code  60:  Device not a stream
zj@bogon:/usr/local/mysql/bin$ perror 30  60
OS error code  30:  Read-only file system
OS error code  60:  Device not a stream
相關文章
相關標籤/搜索