ubuntu环境下使用Clion调试mysql源码(保姆级教学)

废话不多说我们直接切入正题,首先我们先去mysql官网下载,适合自己的版本源码。
mysql官网下载源码地址(点击即可跳转)

在这里插入图片描述
下载完成后解压,用Clion打开下载好的项目
点击File打开setting
查看Toolchains配置是否有误
在这里插入图片描述
准备工作

1.创建目录
basedir:/home/maomao/sourceCode/mysql/mysql-5.7.25
datadir:/home/maomao/sourceCode/mysql/mysql-5.7.25/data
etcdir:/home/maomao/sourceCode/mysql/mysql-5.7.25/etc

2.编写cmake脚本
cmake
-DCMAKE_INSTALL_PREFIX=/home/maomao/sourceCode/mysql/mysql-5.7.25
-DMYSQL_DATADIR=/home/maomao/sourceCode/mysql/mysql-5.7.25/data
-DSYSCONFDIR=/home/maomao/sourceCode/mysql/mysql-5.7.25/etc
-DMYSQL_UNIX_ADDR=/home/maomao/sourceCode/mysql/mysql-5.7.25/data/mysql.sock
-DWITH_DEBUG=1
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/maomao/sourceCode/mysql/mysql-5.7.25 -DDOWNLOAD_BOOST_TIMEOUT=60000

这里遇到的两个坑
(1).- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:250 (MYSQL_CHECK_READLINE)
– Configuring incomplete, errors occurred!
问题原因缺少依赖文件
解决方案:
首先删除CMakeCache.txt
rm CMakeCache.txt
然后安装sudo apt-get install libncurses5-dev(ubuntu)
其他版本可以安装sudo apt-get install ncurses
(2).cmake编译MySQL时报错:the source directory “xxx” does not exist
检查每一句脚本前是否加了- 不加的话就会报这个错。

3.执行make -j 4 (利用多核特性,4表示用4个cpu cores 来make)

遇到的问题:
error: ‘void memset(void*, int, size_t)’ clearing an object of type ‘struct st_nested_join’ with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess]
2791 | st_nested_join() { memset(this, 0, sizeof(this)); }
gcc版本过高 我的gcc 版本是 9.3.0
(gcc -v 查看gcc版本)
解决方式:更换低版本gcc
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-7 g++ -7
查看已安装的版本
ls /usr/bin/gcc

切换版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10 --slave /usr/bin/g++ g++ /usr/bin/g++ -7 *
再次 make -j 4
编译成功
在这里插入图片描述

4.make install -j
在这里插入图片描述

5.初始化数据库
进入bin目录
./mysqld–basedir=/home/maomao/sourceCode/mysql/mysql-5.7.25 --datadir=/home/maomao/sourceCode/mysql/mysql-5.7.25/data --initialize-insecure --user=maomao

使用–initialize-insecure参数执行初始化后 用户的密码默认为空密码

初始化成功后,datadir文件夹中就会生成下列这些文件
在这里插入图片描述

遇到的坑 初始化的时候可能会遇到log 文件权限的问题,根据提示找到所在的文件夹修改
chown -R maomao:maomao mysql(文件名)

开始debug:

打开clion导入项目 点击File ->setting 点击CMake 把上面的脚本在CMake options中再写一遍。 点击ok

在这里插入图片描述
在这里插入图片描述

运行mysqld
在这里插入图片描述

大功告成

杀死mysqld
find / -name mysql.server #查找mysqld.server所在路径
在这里插入图片描述

sudo /disk/mysql-5.7/mysql_data/5.7/support-files/mysql.server stop

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值