不登陸數據庫執行mysql命令小結

 

不登陸數據庫執行mysql命令小結

(本文適合有一定mysql數據庫經驗的讀者)

#########################################################

 

 

█1.通過echo實現(這個比較常見)

echo "show databases;" | mysql -uroot -p'oldboy' -S /data/3308/mysql.sock

提示:此法適合單行字符串比較少的情況。

█2.通過cat實現(此法用的不多)

cat |mysql -uroot -p'oldboy' -S /data/3308/mysql.sock << EOF

show databases;

EOF

提示:此法適合多行字符串比較多的時候。

█3.通過mysql -e參數實現

mysql -u root -p'oldboy' -S /data1/3307/mysql.sock -e "show databases;"

█ 特殊生產場景應用:

例一:mysql自動批量制作主從同步需要的語句。

cat |mysql -uroot -p'oldboy' -S /data/3308/mysql.sock<< EOF

        CHANGE MASTER TO 

 MASTER_HOST='10.0.0.16',

 MASTER_PORT=3306,

 MASTER_USER='oldboyrep',

 MASTER_PASSWORD='oldboyrep',

 MASTER_LOG_FILE='mysql-bin.000025'

 MASTER_LOG_POS=4269;

EOF

提示:大傢多註意整個語句的寫法,而不是cat中的內容。

例二:mysql線程中,“大海撈針”

   平時登陸數據庫show processlist;,發現結果經常超長,找自己要看的的比較困難,而且,

SQL顯示不全。如果直接執行show full processlist那更是瞬間滾瞭N屏。找到有問題的

SQL語句非常困難。

現在好瞭,老男給你們推薦如下語句。

mysql -u root -p'oldboy' -S /data1/3307/mysql.sock -e "show full processlist;"|grep -v Sleep

過濾當前執行的SQL語句完整內容,這條命令很有用。不知道你能否體會到。後面還可以加iconv等對中文轉碼,

根據需求過濾想要的內容,此命令屢試不爽啊。

 

 

本文出自 “老男孩的linux博客” 博客

You May Also Like