由来
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。