准备编译工具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

  • 第三部 make
make -j 4

  • 第四步 安装
make install -j 4

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

配置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.ccdo_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源代码的更多相关文章

  1. 在windows下使用vs2013编译和调试mysql源代码

    1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)perl tool:ActivePerl-5.16.3.1604 ...

  2. vscode配置编译运行调试C/C++文件-windows环境

    在windows环境下,编译运行小文件的C/C++环境 软件准备: vscode mingw64(官网下特别慢,可以在devc++安装软件里中找,放到全局变量中) 插件下载: Run Code C/C ...

  3. Sublime-Text macOS 编译运行armadillo

    { "cmd" : ["g++ -std=c++14 -Wall -larmadillo -framework Accelerate ${file_name} -o ${ ...

  4. Win7+VS2010:mysql 源代码编译与调试

    win7+vs2010源代码编译mysql 近期因为在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制.眼下萌生了要研究一下mysql数据库源代码的想法.那么好吧,说干就干.首先我们 ...

  5. Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

    如果是.NET开发人员,想学习手机应用开发(Android和iOS),Xamarin 无疑是最好的选择,编写一次,即可发布到Android和iOS平台,真是利器中的利器啊!好了,废话不多说,就开始吧, ...

  6. MYSQL源代码编译的变动

    Mysql的安装,对于mysql不同版本号的mysql源代码编译方式不一样 5.6.2的版本号開始编译方式已经由 configure 变成了cmake方式 ,相关的新的 编译方式在mysql官网已经提 ...

  7. EditPlus远程编辑、语法高亮、编译运行源代码设置

    最近写代码的过程中,除了写Java时用的Eclipse.在Linux下编辑的Vi之外,有时也会用EditPlus打开一些文件,如配置文件.日志文件.脚本等.个人觉得EditPlus在很多场景下比较好用 ...

  8. 如何编译和调试Python内核源码?

    目录 写在前面 获取源代码 源代码的组织 windows下编译CPython 调试CPython 小结 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 如果对Pyth ...

  9. 在ASP.NET 5项目中使用和调试外部源代码包

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于在ASP.NET 5中,项目依赖都是通过"包"来引用,所以使用 ...

随机推荐

  1. “随手记”开发记录day08

    今天完成了关于统计页面中的关于每月支出和每月收入的页面

  2. jpa jpql @query 动态查询

    需求/背景 假设有一个用户表, 对应的用户实体: public class User { @Id Long id; //姓名 String name; //性别,男0女1 String sex; // ...

  3. 2、适配器 adapter 模式 加个"适配器" 以便于复用 结构型设计模式

    1.什么是适配器模式? 适配器如同一个常见的变压器,也如同电脑的变压器和插线板之间的电源连接线,他们虽然都是3相的,但是电脑后面的插孔却不能直接插到插线板上. 如果想让额定工作电压是直流12伏特的笔记 ...

  4. 在龙芯mips64el平台编译bmon

    bmon 是一个 实时命令行流量监控软件,但作者在github并没有提供mips64el的版本.下面记录一下编译过程.可以在这里下载bmon.v4.0.linux-mips64el.tar.gz. 环 ...

  5. 2020-03-26:eureka 和其他注册中心比如zk有什么不同?

    从eureka工作原理可以看出,eureka client有缓存功能,即使eureka所有的serve都宕掉,仍然能给服务消费者发送服务信息,所以eureka保证了服务可用性,不能保证数据一致性,是一 ...

  6. Linux系统安装Nginx(Centos7)

    Nginx是一款轻量级的网页服务器.反向代理服务器.它最常的用途是提供反向代理服务,还可以做负载均衡.相较于Apache.lighttpd具有占有内存少,稳定性高等优势.服务端很多场景都需要使用,这篇 ...

  7. 详解Java线程池的ctl(线程池控制状态)【源码分析】

    0.综述 ctl 是线程池源码中常常用到的一个变量. 它的主要作用是记录线程池的生命周期状态和当前工作的线程数. 作者通过巧妙的设计,将一个整型变量按二进制位分成两部分,分别表示两个信息. 1.声明与 ...

  8. 浏览器自动化的一些体会4 webBrowser控件之零碎问题2

    1. DocumentCompleted的多次执行问题 有的网页,会多次触发DocumentCompleted事件,由于它是异步的,不会阻塞,所以如果不恰当处理,会造成某些代码被错误地多次执行,造成意 ...

  9. 通过CMD远程操作Linux系统

    一.文件传输 方法:使用sftp连接方式,sftp 是一个交互式文件传输程式.它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性 命令: //登入:sftp username@ip sftp ...

  10. Android java.lang.SecurityException: Permission Denial

    报错: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE ...