Macos 编译运行调试Mysql源代码

准备编译工具Clion

下载地址

工具是macos用的系统

百度云盘下载地址(密码: 7dus)

下载mysql源码

Mysql源码下载地址

下载boost

boost下载地址

前期准备工作

  • MySQL源码目录:/Users/baiyuliuguang/Documents/study/mysql/mysql-8.0.4-rc
  • MySQL编译工作目录[basedir]:/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc
  • MySQL编译后的数据目录[datadir]:/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data

这些目录其中有的是自己创建的,我展示的是我绝对路径,大家可以放在其他位置,只要配置的时候配置好就行了。

搭建Mysql

编译Mysql

  • 第一步进入源码目录
cd /Users/baiyuliuguang/Documents/study/mysql/mysql-8.0.4-rc/
  • 第二步cmake
cmake 
-DCMAKE_INSTALL_PREFIX=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc 
-DMYSQL_DATADIR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data 
-DSYSCONFDIR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc 
-DMYSQL_UNIX_ADDR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data/mysql.sock 
-DWITH_DEBUG=1  
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/baiyuliuguang/Documents/study/mysql/boost_1_65_0

-w780

  • 第三部 make
make -j 4

-w1013

  • 第四步 安装
make install -j 4

-w837

  • 第五步 初始化数据库
  1. cd /Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/bin
    2../mysqld --basedir=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc --datadir=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data --initialize-insecure --user=baiyuliuguang

-w1688

配置Clion

导入MySQL源码项目

选择路径:/Users/baiyuliuguang/Documents/study/mysql/mysql-8.0.4-rc, 导入后,clion会默认用系统自动的makefile文件make一遍,如果系统自带的boost不是1.65.0的话,会有报错,不用处理,接下来cmake配置后,不会有这问题;

TIP
选择cmake项目

cmake 配置

clion -> Preferences -> Build,Execution,Deployment -> CMake

-w1119

-DCMAKE_INSTALL_PREFIX=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc   -DMYSQL_DATADIR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data  -DSYSCONFDIR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc   -DMYSQL_UNIX_ADDR=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data/mysql.sock  -DWITH_DEBUG=1   -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/baiyuliuguang/Documents/study/mysql/boost_1_65_0
  • 配置debug

-w651

点击Edit Configurations

// 1 中的Target和Executable 都选择mysqld
// 2 中写一个Name,由于上一步已经写了mysqld,这里再次写mysqld,提示已经有应用是mysqd了,这里写的是mysqld2
// 3 中写的是
--defaults-file=/Users/baiyuliuguang/Documents/study/mysql/etc/my.cnf
--basedir=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc
--datadir=/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/data
// 4 中是MySQL编译后的Home路径

其中配置my.cnf

my.cnf的文件内容如下

[mysqld]
port            = 3306

socket          = /Users/baiyuliuguang/Documents/study/mysql/tmp/mysql.sock

skip-external-locking
skip-grant-tables

key_buffer_size = 16K

default-storage-engine=INNODB
character-set-server=utf8

pid-file=/Users/baiyuliuguang/Documents/study/mysql/mysqld/mysqld.pid

[mysqld_safe]

pid-file=/Users/baiyuliuguang/Documents/study/mysql/mysqld/mysqld.pid

[client]
default-character-set=utf8

其中没有的文件夹要自己创建

-w1068

  • 至此所有的都配置好了,点击debug臭虫,就可以启动MySQL。

-w1792

调试

  • 找到sql/sql_parse.ccdo_command函数,设置断点

-w881

  • 登录MySQL,需要进入/Users/baiyuliuguang/Documents/study/mysql/mysql_data/mysql-8.0.4-rc/bin下面执行, 直接enter回车即可,root初始化密码为空密码mysql -uroot -h127.0.0.1 -P3306 -p

-w1478

遇到的问题

如果遇到已经有mysql占用端口

记得关掉这边的myql服务

-w662
-w668

原文地址:https://www.cnblogs.com/yantt/p/macos-bian-yi-yun-xing-diao-shimysql-yuan-dai-ma.html