MySQL的彩色提示符

前言

其實我對MySQL本身并不是很瞭解,但是之前卻花了不少時間來折騰MySQL的命令行和客戶端。所謂工欲善其事,必先利其器。習慣了Linux下的彩色提示符,自然也想配個彩色的mysql命令行提示符(雖然沒什麽用,但就是想)。在此把過程整理下,留作將來。

彩色提示符

mysql命令行的彩色提示符,網上已經有方法了,是通過設置如下MYSQL_PS1實現的:

export MYSQL_PS1=$(echo -e "\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d>\x1B[0m ")

簡單分析下,1B對應的是Esc的ascii碼的十六進制,同理八進制就是33

\x\0分別表示轉義十六進制和八進制,所以\x1B\033都表示Esc這個字符,如果單純用轉義符號表示的話就是\e

[31m是個顔色符號,表示紅色,[0m表示顔色終止。設置完成后效果如下

mysql cli

但是爲了管理方便,我想把它寫到my.cnfprompt設置裏,但是mysql配置文件似乎不支持如上的轉義,所以必須將Esc打出來。

在vim裏用Ctrl+V+Esc可以打出Esc字符,效果如下:

my.cnf

需要注意的是,Esc字符是不可見的,有些編輯器會顯示其為一個字符,不過不同編輯器的顯示會有不同。

其他

除了彩色提示符,我還折騰了其他一些亂七八糟的,比如MySQL的客戶端對比,ssh隧道鏈接mysql,都一并整理下。

MySQL客户端对比

  • Navicat

  • DataGrip

  • Heidisql

  • SQLyog

  • MySQL Workbench

  • DBeaver

論顔值的話,Navicat,DataGrip都不錯。其中DataGrip的sql自動補全功能更是强大,但它有個致命傷,跑個命令幾乎要等3s才能看到結果。。(有可能是設置問題)只好放棄了。

Navicat顔值也不錯,但是用不慣它的快捷鍵,也沒法改。速度嘛也一般,沒啥亮點。

SQLyog速度不錯,還是快捷鍵用不慣,沒法改。且以上三款都是要收費的,而且價格不便宜。

MySQL Workbench和DBeaver感覺中規中矩。

最終選擇了Heidisql,因爲它有兩個我很喜歡的功能

  1. 從連接上數據就就開始的執行log,很清楚這個軟件在後臺執行了什麽,對開發者很友好

  2. 支持打開CLI Console

這真是個面嚮開發者的工具,當然也有些bug,還好可以接受。

最後,其實最靠譜的還是mysql命令行。。

docker運行mysql

docker run --name mysql --rm -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

mysql -h 127.0.0.1 -u root

用localhost連接的話,會使用本地的sock file,不走網卡,導致連接不了。

SSH tunnel連接mysql

好不容易配置了mysql client環境,當然不能只能在本地使用。

ssh -f [email protected] -L 3306:localhost:3306 -N

mysql -u root -h 127.0.0.1

爲了連接方便,我又在my.cnf裏增加了如下配置,然後通過mysql --defaults-group-suffix=_db02來選擇數據庫。

[client]
port = 3306

[client_db01]
port = 3307
prompt="\\u@uco-dev-db01:\\d> "

[client_db02]
port = 3308
prompt="\\u@uco-dev-db02:\\d> "

最后更新于