現象:
在本地登錄,執行 /usr/local/mysql/bin/mysql -uroot -pxxxxx --socket=/data/mysql/3306/mysqltmp/mysql.sock -A
報錯如下:
顯示完下面信息之后,就顯示:
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Segmentation fault (core dumped)
測試:
(1)在其它機器登錄,沒有問題;說明只是本地mysql的問題;
(2)在本機執行語句,沒問題,而不執行語句,進到命令行狀態就有問題,說明只是進入命令行時的報錯。
/usr/local/mysql/bin/mysql -uroot -pxxxxxx --socket=/data/mysql/3306/mysqltmp/mysql.sock -e "select * from information_schema.PROCESSLIST where command<>'Sleep';"
(3)MySQL的錯誤日志,沒有報錯:
(4)操作系統報錯如下:
解決:
參考了別人的經驗,需要修改源碼然后重新編譯,便可解決,其它機器這個版本沒問題,暫時不知道是否與安裝出錯有關。
我的版本是5.7.21,如果你使用的是其它版本的MySQL,則需要對應版本的源碼:
修改文件:vi mysql-5.7.21/cmd-line-utils/libedit/terminal.c
把terminal_set方法中的 char buf[TC_BUFSIZE]; 這一行注釋,再把 area = buf;改為 area = NULL;
更改后如下
之后重新通過cmake,make;make install,重裝mysql之后正常。