Clion+Ubuntu(WSL)+MySQL8.0开发、调试环境搭建

1. 下载 MySQL 源码

访问 MySQL 官方网站(MySQL :: Download MySQL Community Server)并下载 MySQL 8.0 的源码包(mysql-boost-8.0.31.tar.gz)。

2. 安装编译依赖

1)更换镜像源

参考:Linux Ubuntu 修改 /etc/apt/sources.list (镜像源)文件(非常实用)-CSDN博客

2)安装 gcc

sudo apt install gcc-11

3)安装构建 MySQL 所需的编译依赖。运行以下命令安装所需的软件包:

sudo apt install build-essential cmake libncurses5-dev libssl-dev libboost-all-dev gdb

注意,我们添加了 gdb 软件包,它是用于调试的工具。

3. 解压源码包

将下载的源码包解压到一个目录中。假设你将其解压到 /usr/local 目录下。

sudo tar xvf mysql-boost-8.0.31.tar.gz

4. 创建用户和组

1)在 /home 目录下创建一个新的普通用户

// 若待创建的用户名和组已存在,则删除,重新创建
sudo userdel mysql80
sudo groupdel mysql80

// 新的用户名为 mysql80
sudo adduser mysql80

// 输入上述命令后会提示为该用户设置密码

// 接下来会提示出入下列等,直接回车使用默认即可,然后输入 Y
Full Name []:
    ...

// 用户创建完成

结果如下:

2)进入 mysql80 用户并创建如下文件及文件夹

 

vim my80.cnf

// my80.cnf 内容如下
[client]
user=mysql80
socket=/home/mysql80/node3307/tmp/mysql.sock

[mysqld]
user=mysql80
#init-file=/home/mysql80/init.file
core-file
skip-name-resolve                       = 1
default-storage-engine                  = InnoDB
basedir                                 = /usr/local/mysql80
datadir                                 = /home/mysql80/node3307/data
tmpdir                                  = /home/mysql80/node3307/tmp
plugin-dir                              = /usr/local/mysql80/lib/plugin
pid-file                                = /home/mysql80/node3307/tmp/mysql.pid
port                                    = 3307
socket                                  = /home/mysql80/node3307/tmp/mysql.sock
log-error=/home/mysql80/node3307/logs/mysqld.log
server-id=99

mkdir node3307

3)进入 node3307 创建如下文件夹

mkdir data
mkdir logs
mkdir tmp

说明:clean.sh initial.sh start.sh stop.sh 为 mysql 初始化、启动、停止、清理缓存等脚本文件,可根据需要考虑是否创建,脚本文件内容如下:

  • clean.sh 脚本内容如下:
#!/bin/bash                           
                                      
rm -rf ./data/*                       
rm -rf ./logs/*                       
rm -rf ./tmp/*  
  • initial.sh 脚本内容如下:
#!/bin/bash

./clean.sh

/home/mysql80/mysql80/bin/mysqld --defaults-file=/home/mysql80/my80.cnf --initialize-insecure
  • stop.sh 脚本内容如下:
#!/bin/bash

ps -ef | grep mysqld | grep -v grep | awk '{print $2;}' | xargs -I {} kill -9 {}
  • start.sh 脚本内容如下:
#!/bin/bash

./stop.sh
nohup /home/mysql80/mysql80/bin/mysqld --defaults-file=/home/mysql80/my80.cnf  > ./start.log 2>&1 &

4)执行如下命令修改 data、logs、tmp 文件的用户名和组名

sudo chown -R mysql80:mysql80 -R /home/mysql80

说明:该命令会把 mysql80 下的所有文件及文件夹的用户名和组名修改为 mysql80

修改结果如下:

5)修改 my80.cnf 文件权限

 cd /home/mysql80
 chmod  0644 my80.cnf

重要的事情说三遍:

上述创建用户和组的流程非常重要!

上述创建用户和组的流程非常重要!

上述创建用户和组的流程非常重要!

如果不修改 data、logs、tmp、my80.cnf 的用户名和组名以及 my80.cnf 的权限,则在下述安装和初始化 mysql 时,无法访问 data、logs、tmp、my80.cnf 等文件!

 


上述步骤都是 Ubuntu(WSL) 下源码安装 MySQL 的基操,Ubuntu(WSL)下源码安装 MySQL 参考:Ubuntu(WSL)下源码安装 MySQL(建议在 Ubuntu(WSL) 下先源码安装 MySQL8.0)

5. Clion+Ubuntu(WSL)+MySQL开发环境配置

5.1 使用 Clion 打开 MySQL8.0 源码

5.2 打开 Settings - Toolchains 并进行相关配置

5.3 打开 Settings - CMake 并进行相关配置

1)在 Toolchain 和 Generator 栏中选择图中所示参数

2)在 CMake options 栏中填入编译参数

编译参数如下:

-G "Unix Makefiles"
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql80
-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_general_ci
-DEXTRA_CHARSETS=all
-DENABLED_LOCAL_INFILE=1
-DDOWNLOAD_BOOST=1
-DWITH_DEBUG=1
-DWITH_BOOST=/usr/local/all_boost
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DCMAKE_C_FLAGS="-Wno-unused-variable -Wno-unused-parameter"
-DCMAKE_CXX_FLAGS="-Wno-unused-variable -Wno-unused-parameter"
-DWITH_EMBEDDED_SERVER:BOOL=OFF
-DBUILD_TESTING:BOOL=OFF
-DWITH_UNIT_TESTS:BOOL=OFF
-DWITH_SSL:STRING=/usr/local/openssl

注意:之所以指定:-DWITH_SSL:STRING=/usr/local/openssl 是因为默认安装的 openssl 出现了问题,如果默认安装的 openssl 没有问题,则此处无需指定。

说明:不同版本的 MySQL 在编译时可能需要不同版本的 boost,因此在编译 MySQL 时尽量不要使用 boost 根目录,boost 根目录如下:

3)编译目录(Build directory)使用默认即可,也可人为指定,然后依次点击:Apply、OK

5.4 在 Edit Configurations... 栏中选择可执行文件 mysqld

1)在 Program arguements 栏中填入如下参数

--defaults-file=/home/mysql80/my80.cnf --user=mysql80

2)在 Working directory 栏中选择如下路径

\\wsl$\Ubuntu-22.04\usr\local\mysql80

 

3)依次点击 Apply - OK

my80.cnf 配置文件如下:

[client]
user=mysql80
socket=/home/mysql80/node3307/tmp/mysql.sock

[mysqld]
user=mysql80
#init-file=/home/mysql80/init.file
core-file
skip-name-resolve                       = 1
default-storage-engine                  = InnoDB
basedir                                 = /usr/local/mysql80
datadir                                 = /home/mysql80/node3307/data
tmpdir                                  = /home/mysql80/node3307/tmp
plugin-dir                              = /usr/local/mysql80/lib/plugin
pid-file                                = /home/mysql80/node3307/tmp/mysql.pid
port                                    = 3307
socket                                  = /home/mysql80/node3307/tmp/mysql.sock
log-error=/home/mysql80/node3307/logs/mysqld.log
server-id=99

5.5 在 mysqld - Program arguements 栏中填入 mysql 的配置文件

5.6 点击 Build - Install

说明:此处 Install 包含在终端下源码安装 MySQL 过程中的 make 和 install 两个过程

5.7 完成安装

6. Clion+Ubuntu(WSL)+MySQL调试环境配置

6.1 MySQL 数据库初始化

执行如下命令进行初始化

# 进入安装目录 
cd /usr/local/mysql80

# 初始化 
bin/mysqld --defaults-file=/home/mysql80/my80.cnf --initialize-insecure --user=mysql80    // 免密初始化

6.2 启动并调试 mysqld

1)点击界面上的 Debug 按钮,启动并调试 mysqld,等待启动完成...

启动结果如下:

2)执行 ps -ef | grep mysqld 检查 mysqld 是否成功启动

6.3 登陆 mysql

1)首次登陆 mysql 时,使用如下命令登陆 mysql

/usr/local/mysql80/bin/mysql -uroot -S /home/mysql80/node3307/tmp/mysql.sock

2)登陆 mysql 后,使用如下命令修改登陆权限

update mysql.user set host='%' where user='root'; 

提示:执行完该命令后,重启 mysql

3)之后便可以使用如下命令登陆 myql

/usr/local/mysql80/bin/mysql -h127.0.0.1 -uroot -P3306

说明:如果不执行第二步修改权限,会报如下错误:

7. Clion+Ubuntu(WSL)+MySQL8.0开发、调试环境搭建完成

8. Clion+Ubuntu(WSL)+MySQL8.0开发、调试环境测试

1)在 dispatch_sql_command 函数处打断点

2)输入 sql 命令 - 回车 - 进入调试环境

说明:因为在一台机器上装了多个版本的 mysql,所以在整理笔记时,打开了不同版本的代码,但配置流程完全没有问题!

说明:因为在一台机器上装了多个版本的 mysql,所以在整理笔记时,打开了不同版本的代码,但配置流程完全没有问题!

说明:因为在一台机器上装了多个版本的 mysql,所以在整理笔记时,打开了不同版本的代码,但配置流程完全没有问题!

配置过程中,若有疑问,欢迎提问交流!

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库内核

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值