1. cmake 安装好,使用 homebrew 即可
2. https://github.com/mysql/mysql-server clone MySQL 源代码
3. clone 完毕之后,在 mysql-server 根目录建一个目录 bld
4. 进入 bld 执行以下命令,.. 表示源代码位置,-G "Xcode" 表示生成 xcode 文件, -DWITH_DEBUG=1 这个选项千万不能忘,否则 debug 找不到行号直接让你看汇编,-DCMAKE_INSTALL_PREFIX 表示编译路径,后面指令是下载 boost
引用
cmake .. -G "Xcode" -DWITH_DEBUG=1 -DCMAKE_INSTALL_PREFIX=绝对路径/mysql-server/bld/install -DDOWNLOAD_BOOST=1 -DWITH_BOOST=绝对路径/mysql-server/bld/install/boost
5. 编译完成后,你就可以看到 MySQL.xcodeproj 文件,xcode 选择这个文件打开,自动生成 schema
6. 选择 ALL_BUILD 并按三角键执行 install , 执行完毕之后会在 bld/runtime_output_directory/Debug 目录生成熟悉的应用程序。
7. 创建一个 my.cnf 放在应用程序目录下(bld/runtime_output_directory/Debug),内容可以简单些,如下
引用
[mysqld]
datadir=绝对路径/mysql-server/bld/runtime_output_directory/data
socket=绝对路径/mysql-server/bld/runtime_output_directory/mysql.sock
port=33061
datadir=绝对路径/mysql-server/bld/runtime_output_directory/data
socket=绝对路径/mysql-server/bld/runtime_output_directory/mysql.sock
port=33061
8. 在命令行,或者在 xcode 中 schema 选择 mysqld, edit schema, 添加如下参数,此处 -- initialize 务必放后面,否则失败
引用
--defaults-file=绝对路径/mysql-server/bld/runtime_output_directory/Debug/my.cnf
--initialize
--initialize
9. 初次初始化因为我们是选择默认系统初始化 root 用户的密码,所以务必记住日志打印出来的密码,重新启动前去掉 --initialize 参数,使用 root 登陆后会强制让你重设密码。如果这个密码忘了,参见我另外一篇文章《MySQL 8.0 root密码忘了怎么办》
10. 接下来就可以愉快的 debug 了,如果需要 debug 启动初始化过程,可以断点打在 mysqld.cc 文件的 mysqld_main 函数中,如果需要 debug 指令,可以断点打在 sql_parse.cc 文件的 do_command 函数中