Macos 编译运行调试Mysql源代码
准备编译工具Clion
下载地址
工具是macos用的系统
下载mysql源码
下载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

- 第三部 make
make -j 4

- 第四步 安装
make install -j 4

- 第五步 初始化数据库
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

配置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

-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

点击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
其中没有的文件夹要自己创建

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

调试
- 找到
sql/sql_parse.cc的do_command函数,设置断点

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

遇到的问题
如果遇到已经有mysql占用端口
记得关掉这边的myql服务


Macos 编译运行调试Mysql源代码的更多相关文章
- 在windows下使用vs2013编译和调试mysql源代码
1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)perl tool:ActivePerl-5.16.3.1604 ...
- vscode配置编译运行调试C/C++文件-windows环境
在windows环境下,编译运行小文件的C/C++环境 软件准备: vscode mingw64(官网下特别慢,可以在devc++安装软件里中找,放到全局变量中) 插件下载: Run Code C/C ...
- Sublime-Text macOS 编译运行armadillo
{ "cmd" : ["g++ -std=c++14 -Wall -larmadillo -framework Accelerate ${file_name} -o ${ ...
- Win7+VS2010:mysql 源代码编译与调试
win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们 ...
- Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行
如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...
- MYSQL源代码编译的变动
Mysql的安装,对于mysql不同版本号的mysql源代码编译方式不一样 5.6.2的版本号開始编译方式已经由 configure 变成了cmake方式 ,相关的新的 编译方式在mysql官网已经提 ...
- EditPlus远程编辑、语法高亮、编译运行源代码设置
最近写代码的过程中,除了写Java时用的Eclipse.在Linux下编辑的Vi之外,有时也会用EditPlus打开一些文件,如配置文件.日志文件.脚本等.个人觉得EditPlus在很多场景下比较好用 ...
- 如何编译和调试Python内核源码?
目录 写在前面 获取源代码 源代码的组织 windows下编译CPython 调试CPython 小结 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 如果对Pyth ...
- 在ASP.NET 5项目中使用和调试外部源代码包
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,项目依赖都是通过"包"来引用,所以使用 ...
随机推荐
- MyBatisPlus分页查询,删除操作
分页查询 分页查询在网页使用十分之多 原始的limit进行分页 pageHelper第三方插件 3. MP内置的分页插件 导入配置 如何使用,官网的代码如下 //分页插件 @Bean public P ...
- 谈谈MySql索引
刚刚学习完丁奇老师<MySql 实战 45 讲>专栏中的索引部分,图文并茂的风格解开了我之前的许多疑惑,并且学习到许多新的东西,在此做个笔记,方便后续复习.由于 MySql 中存在多种存储 ...
- ElasticSearch 7.8.1 从入门到精通
学前导读 ElasticSearch对电脑配置要求较高,内存至少4G以上,空闲2G内存,线程数4018+ 学习的时候,推荐将ElasticSearch安装到Linux或者mac上,极度不推荐装Wind ...
- 2020-06-20:一句话总结ZK?
福哥答案2020-06-20: 这道题价值不大,但是面试题里有这道题. 分布式协调服务,注册服务和发现,树形结构,监听机制,过半机制. ZooKeeper是源代码开放的分布式协调服务,由雅虎公司创建, ...
- 下载的附件名总乱码?你该去读一下 RFC 文档了!
纸上得来终觉浅,绝知此事要躬行 Web 开发过程中,相信大家都遇到过附件下载的场景,其中,各浏览器下载后的文件名中文乱码问题或许一度让你苦恼不已. 网上搜索一下,大部分都是通过Request Head ...
- 关于Dapper实现读写分离的个人思考
概念相关 为了确保多线上环境数据库的稳定性和可用性,大部分情况下都使用了双机热备的技术.一般是一个主库+一个从库或者多个从库的结构,从库的数据来自于主库的同步.在此基础上我们可以通过数据库反向 ...
- PythonCrashCourse 第八章习题
编写一个名为display_message() 的函数,它打印一个句子,指出你在本章学的是什么.调用这个函数,确认显示的消息正确无误 def display_message(): print(&quo ...
- Go:grpc
一.grpc安装 将 https://github.com/google/go-genproto 修改文件名放到 $GOPATH/src/google.golang.org/genproto 将 ht ...
- 前端 的一些css的写法
攒一下小技巧 1.select 默认提示但是不显示在选择列表中 <option selected="selected" disabled="disabled&quo ...
- 移动web开发之布局
移动web开发流式布局 1.0 移动端基础 1.1浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器:UC浏览器,Q ...