文章目录
本人最近打算研究一下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的日志,找到这个密码就可以用它来登录了。
当然你也可以使用网上的安全模式来暴力来解决,自行百度。