OpenSuSE下MySQL遇到的BUG与修复

文章目录

  • 系统环境
    • OS
    • MySQL
    • Project
  • 1: mysql/udf_registration_types.h
    • error详情
    • 处理方法
    • 原因剖析
  • 2: ERROR 1045 (28000)
    • error详情
    • 处理方法
    • 原因剖析

本人最近打算研究一下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 
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

处理方法

只需要将’/usr/include/mysql/mysql_com.h’这个头文件的第1011行代码的#include方式由<>改成""。修改之后的这行代码是:

#include "mysql/udf_registration_types.h"

原因剖析

由于C/C++里#include

方式,编译器在编译时只会去编译器指定的类库目录下寻找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的日志,找到这个密码就可以用它来登录了。
当然你也可以使用网上的安全模式来暴力来解决,自行百度。

你可能感兴趣的:(Linux,MySQL)