不登陸數據庫執行mysql命令

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

echo "show databases;" | mysql -uroot -pqwe123 -S /data/3307/mysql.sock

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


2.通過mysql -e參數實現

mysql -u root -pqwe123 -S /data1/3307/mysql.sock -e "show databases;"


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

cat |mysql -uroot -pqwe123 -S /data/3307/mysql.sock << EOF

show databases;

EOF

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


特殊生產場景應用:

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

cat |mysql -uroot -pqwe123 -S /data/3307/mysql.sock<< EOF

        CHANGE MASTER TO  

 MASTER_HOST='10.0.0.16', 

 MASTER_PORT=3306,

 MASTER_USER='jie', 

 MASTER_PASSWORD='qwe123', 

 MASTER_LOG_FILE='mysql-bin.000025'

 MASTER_LOG_POS=4269; 

EOF

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

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

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


且,

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

SQL語句非常困難。

現在好了,給你們推薦如下語句。

mysql -uroot -pqwe123  -e "show full processlist;"|grep -v Sleep

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

根據需求過濾想要的內容。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章