OpenSuSE下MySQL遇到的BUG與修復

本人最近打算研究一下Kbengine服務器,於是git clone一份源碼到電腦上開始研究。這個過程中遇到了一些BUG,基本都是MySQL的BUG。一些基本的BUG,比如說缺少某些庫或某些依賴程序的我就不贅述了,這篇文章只說一些實實在在的BUG。

系統環境

OS

OpenSuSE 15.0

MySQL

MySQL Community Server 8.0

Project

Kbengine

1: mysql/udf_registration_types.h

error詳情

In file included from /usr/include/mysql/mysql.h:81:0,
                 from db_interface_mysql.h:14,
                 from db_exception.cpp:4:
/usr/include/mysql/mysql_com.h:1011:10: fatal error: mysql/udf_registration_types.h: No such file or directory
 #include <mysql/udf_registration_types.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

處理方法

只需要將’/usr/include/mysql/mysql_com.h’這個頭文件的第1011行代碼的#include方式由<>改成""。修改之後的這行代碼是:

#include "mysql/udf_registration_types.h"

原因剖析

由於C/C++裏#include <header> 方式,編譯器在編譯時只會去編譯器指定的類庫目錄下尋找header這個頭文件,找不到就會報錯。
而#include "header"方式,編譯器會先去當前項目目錄下尋找header頭文件,找不到的話再去編譯器指定的類庫目錄下尋找。
‘mysql/udf_registration_types.h’這個頭文件是在’/usr/include/mysql/mysql’下,即項目目錄下,所以以#include “header” 方式來包含這個頭文件就修復了所遇到的BUG。

2: ERROR 1045 (28000)

error詳情

安裝mysql後第一次登錄遇到這樣的錯誤。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
//或者
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

處理方法

打開mysql的配置文件

vim /etc/my.cnf

找到log-erro這個變量的路徑。
我的是:‘log-error=/var/log/mysql/mysqld.log’

sudo vim /var/log/mysql/mysqld.log

找到這個日誌中關於password的這條記錄,一般在日誌最開始的地方。
我的是:2018-10-20T02:55:07.272961Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 1N/eB7lc#Ihj
最後這個字符串就是安裝完MySQL後的初始密碼。
在MySQL 服務已經啓動的情況下:

mysql -u root -p

然後輸入上邊找到的初始密碼就能成功登錄MySQL了。

原因剖析

出於安全考慮,MySQL安裝後會初始一個隨機密碼。我們只需要找到MySQL的日誌,找到這個密碼就可以用它來登錄了。
當然你也可以使用網上的安全模式來暴力來解決,自行百度。

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