加強MySQL CLI的可讀性和靈活性

MySQL的命令行其實也能像ORACLE的sql/plus同樣靈活多變
mysql

1、將mysql下執行的內容導出成文件(非into outfile)git

tee /path/file 指定導出文件名稱github

notee 中止導出sql

root@localhost:wm_ztcj> tee /tmp/user.log
Logging to file '/tmp/user.log'
root@localhost:wm_ztcj> select user,host,password from mysql.user;
+-----------------+-----------------------+-------------------------------------------+
| user            | host                  | password                                  |
+-----------------+-----------------------+-------------------------------------------+
| root            | localhost             | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | localhost.localdomain | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | 127.0.0.1             | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | ::1                   | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| repl            | %                     | *50C610800D1B52DF4C81430612A0A4DF1B5487DE |
| wg_user         | %                     | *C91B3E8D9994614CDC307B3DA6E04616A780E21E |
| wm_sns_user     | %                     | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| wm_sns_user     | 192.168.0.%           | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| wm_sns_user     | localhost             | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| checker         | %                     | *9A85346FF112526836DB4101A6794463E03D8727 |
| zabbix          | localhost             | *9CBC0CDFECC6EDB55518791A797EAEE799141804 |
| wm_ztcj         | %                     | *E1CBA20F460E6A92300A2D40049990345A449EEA |
| wm_develop_test | %                     | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| wm_develop_test | localhost             | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| wm_ztcj         | localhost             | *E1CBA20F460E6A92300A2D40049990345A449EEA |
| wm_develop_test | 192.168.0.%           | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| root            | 192.168.0.%           | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
+-----------------+-----------------------+-------------------------------------------+
17 rows in set (0.01 sec)
root@localhost:wm_ztcj> notee
Outfile disabled.
root@localhost:wm_ztcj> exit
Bye
[mysql@WM_ZTCJ ~]$ more /tmp/user.log 
root@localhost:wm_ztcj> select user,host,password from mysql.user;
+-----------------+-----------------------+-------------------------------------------+
| user            | host                  | password                                  |
+-----------------+-----------------------+-------------------------------------------+
| root            | localhost             | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | localhost.localdomain | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | 127.0.0.1             | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| root            | ::1                   | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
| repl            | %                     | *50C610800D1B52DF4C81430612A0A4DF1B5487DE |
| wg_user         | %                     | *C91B3E8D9994614CDC307B3DA6E04616A780E21E |
| wm_sns_user     | %                     | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| wm_sns_user     | 192.168.0.%           | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| wm_sns_user     | localhost             | *14A720739D63BA762B59848FBB67436EEA6F1D46 |
| checker         | %                     | *9A85346FF112526836DB4101A6794463E03D8727 |
| zabbix          | localhost             | *9CBC0CDFECC6EDB55518791A797EAEE799141804 |
| wm_ztcj         | %                     | *E1CBA20F460E6A92300A2D40049990345A449EEA |
| wm_develop_test | %                     | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| wm_develop_test | localhost             | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| wm_ztcj         | localhost             | *E1CBA20F460E6A92300A2D40049990345A449EEA |
| wm_develop_test | 192.168.0.%           | *2B084359A06856B7758E41D33BE6D0DD7AB79CCB |
| root            | 192.168.0.%           | *728A5A63A7262B3CDCF9F016C5C8922964944607 |
+-----------------+-----------------------+-------------------------------------------+
17 rows in set (0.01 sec)

2、使用edit編輯vim

有時候數據一整條很長的命令以後,但願從新編輯一下,若是光靠光標左右移動,效果不好,能夠直接edit編輯bash

root@localhost:wm_ztcj_develop> select * from wm_user_dynamic2 limi 1\G
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
root@localhost:wm_ztcj_develop> edit

這樣就進入了VIM(我將默認的VI編輯器變成了vim)中編譯命令編輯完成以後退出dom

能夠手動指定 set @editor='vim';編輯器

      1 select * from wm_user_dynamic2 limit 1
      ~                                                                                                                                                                                                    
/tmp/sql183PTC [+]                                                                                                                                                                                   
"/tmp/sql183PTC" 1L, 39C written

    -> \G --輸入;或者\G繼續執行以前的命令
    *************************** 1. row ***************************
               ID: 2800626
              UID: 1
             OUID: 1
             CUID: NULL
              BID: NULL
              CID: NULL
             BCID: NULL
             HDID: NULL
             PCID: NULL
             CDID: NULL
              RID: 2222
      ADDTERMINAL: 4
            STATE: NULL
          DISPLAY: 0
             TYPE: 1
          ADDTIME: 2014-03-26 15:04:38
       ADDADMINID: NULL
            ADDIP: NULL
   LASTUPDATETIME: NULL
     LASTUPDATEIP: NULL
LASTUPDATEADMINID: NULL

3、MySQL的Pager(頁面顯示風格)
工具

有時數據量大一次顯示完不方便查閱,但願能像more同樣讀取:spa

root@localhost:wm_ztcj_develop> pager more
PAGER set to 'more'

root@localhost:wm_ztcj_develop> show status;
+-----------------------------------------------+----------------+
| Variable_name                                 | Value          |
+-----------------------------------------------+----------------+
| Aborted_clients                               | 1666           |
| Aborted_connects                              | 28776          |
| Binlog_cache_disk_use                         | 4              |
| Binlog_cache_use                              | 339021         |
| Binlog_stmt_cache_disk_use                    | 11387          |
| Binlog_stmt_cache_use                         | 67796          |
| Bytes_received                                | 643            |
| Bytes_sent                                    | 17685          |
| Com_admin_commands                            | 0              |
| Com_assign_to_keycache                        | 0              |
| Com_alter_db                                  | 0              |
| Com_alter_db_upgrade                          | 0              |
| Com_alter_event                               | 0              |
| Com_alter_function                            | 0              |
| Com_alter_procedure                           | 0              |
| Com_alter_server                              | 0              |
| Com_alter_table                               | 0              |
| Com_alter_tablespace                          | 0              |
| Com_drop_server                               | 0              |
| Com_drop_table                                | 0              |
| Com_drop_trigger                              | 0              |
| Com_drop_user                                 | 0              |
| Com_drop_view                                 | 0              |
--More--

若是但願從結果中過濾關鍵字,也可將pager替換成grep工具:

例如想查看innodb中checkponit位置變化

root@localhost:wm_ztcj_develop> pager grep checkpoint
PAGER set to 'grep checkpoint'

root@localhost:wm_ztcj_develop> show engine innodb status\G select sleep(3);show engine innodb status\G
Last checkpoint at  437227579829
1 row in set (0.05 sec)

1 row in set (3.00 sec)

Last checkpoint at  437243479330
1 row in set (0.05 sec)

爲了避免影響下次查詢的使用,須要將pager 設置成標準輸出,或者以前的配置

root@localhost:wm_ztcj_develop> pager more
PAGER set to 'more'
root@localhost:wm_ztcj_develop> \n  --設置成標準輸出
PAGER set to stdout
root@localhost:wm_ztcj_develop> \P  --設置成以前的輸出方式
PAGER set to 'more'

4、給命令行上色

須要下載一個工具grc,並使用配置文件color-mysql-console

[mysql@WM_ZTCJ ~]$ wget http://korpus.juls.savba.sk/~garabik/software/grc/grc_1.5.tar.gz
[mysql@WM_ZTCJ ~]$ tar zvxf grc_1.5.tar.gz 
[mysql@WM_ZTCJ ~]$ cd grc-1.5/
[mysql@WM_ZTCJ ~]$ ./install.sh /usr/local/grc  --指定你但願安裝的路徑
安裝完畢以後,上傳color-mysql-console的配置文件
下載地址:
[mysql@WM_ZTCJ ~]$ wget https://codeload.github.com/nitso/colour-mysql-console/zip/master
解壓後將配置文件放在當前用戶的家目錄下便可
[mysql@WM_ZTCJ ~]$ echo "alias mysql=$(echo -e 'mysql --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d>\x1B[0m "')" >> .bash_profile

再次登陸mysql:

是否是要比枯燥的黑白色好多了?

5、pager md5sum 校驗

若是在改寫SQL以後但願校驗下改寫的SQL執行結果是否與以前的一直,能夠以下使用:

root@localhost:wm_ztcj> pager md5sum
PAGER set to 'md5sum'
root@localhost:wm_ztcj> select * from wm_user_info order by id desc limit 1;select * from wm_user_info where id=(select max(id) from wm_user_info);
125138b7769186a6834ad030ad928f74  -
1 row in set (0.41 sec)

125138b7769186a6834ad030ad928f74  -
1 row in set (0.00 sec)

這樣就能夠避免逐條比較記錄了,直接獲取結果。

相關文章
相關標籤/搜索