由来

mysql在工作当中使用非常频繁,对其中的源码十分好奇,所以搭建调试环境,可以慢慢debug其中的代码,阅读大神的作品,体会其中的精彩设计。

准备

源码下载

官方社区下载站 https://downloads.mysql.com/a... 找到 mysql-boost-5.7.10.tar.gz 进行下载

以下是特定版本的下载链接,可直接使用 https://cdn.mysql.com/archive...

编译需要的库

sudo apt install libncurses5-dev bison libssl-dev

编译

tar -zxvf mysql-boost-5.7.36.tar.gz
cd mysql-5.7.36
mkdir -p debug/data

## 设置编译环境
cmake -DCMAKE_INSTALL_PREFIX=/home/panda/workspace/code/tmp/mysql-5.7.36/debug \
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DCMAKE_C_FLAGS_RELWITHDEBINFO="-O2 -g" -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O2 -g" \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=./boost/boost_1_59_0/  \
-DMYSQL_DATADIR=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/data  \
-DWITH_DEBUG=1

## 开始编译
make -j `grep processor /proc/cpuinfo | wc -l`
make install 

## 初始化
./debug/bin/mysqld --defaults-file=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/etc/my.cnf \
--basedir=/home/panda/workspace/code/tmp/mysql-5.7.36/debug  \
--datadir=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/data  \
--explicit_defaults_for_timestamp=1  \
--log_error=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/error.log \
--initialize-insecure --user=panda

## 启动mysqld
./debug/bin/mysqld --defaults-file=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/etc/my.cnf

## 设置root密码
mysql -h 127.0.0.1 -u root
> use mysql;
> update user set authentication_string=password('123123') where user='root' and host='localhost';
> flush PRIVILEGES;
> exit

mysql -h 127.0.0.1 -u root -p

PS

系统环境版本说明:
: uname -a
: Linux thinkpad-t420 5.13.0-52-generic #59-Ubuntu SMP Wed Jun 15 20:17:13 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

: gcc -v
: gcc version 8.5.0 (Ubuntu 8.5.0-0ubuntu4) 

: cmake -version
: cmake version 3.18.4

: make -v
: GNU Make 4.3

: lsb_release -a
: Distributor ID:    Ubuntu
  Description:    Ubuntu 21.10
  Release:    21.10
  Codename:    impish

主要版本信息如上展示,其中系统版本不是最主要的,gcc\cmake\make 的版本才是编译的关键。

Qt creator

IDE 环境配置就以截图的方式展示

创建项目

PS
my.cnf 文件

[mysqld]
basedir=/home/panda/workspace/code/tmp/mysql-5.7.36/debug
datadir=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/data
port=3306
log_error=/home/panda/workspace/code/tmp/mysql-5.7.36/debug/error.log
explicit_defaults_for_timestamp=1

Mario
56 声望5 粉丝

方向大于努力,选择方向总有个期限,过了期限还要再考虑方向问题,岂不是自增烦恼