环境
- Ubuntu20.04
- CLion 2020.2.4
- MySQL5.7 源码
代码下载自己各显神通吧,直接git clone会比较慢
我使用的是这个油猴脚本的直接下载单个版本的,没有git相关信息。
安装依赖
包含各种编译所需依赖,其中部分是ubuntu系统已经有的
sudo apt install cmake make gcc g++ openssl libssl-dev libncurses5-dev bison
编译构建
首先需要在shell中尝试下构建,看看有没有什么问题,没问题再上Clion
# 进入源码目录
cd mysql-server
# 创建构建文件的目录及数据目录 以及boost目录
mkdir -p /home/xfchen/mysql/build/ /home/xfchen/mysql/build/data /home/xfchen/mysql/boost
cmake -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=/home/xfchen/mysql/build \
-DMYSQL_DATADIR=/home/xfchen/mysql/build/data \
-DSYSCONFDIR=/home/xfchen/mysql/build \
-DMYSQL_UNIX_ADDR=/home/xfchen/mysql/build/data/mysql.sock \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/home/xfchen/mysql/boost
# 构建
make -j 8
# 安装MySQL
make install -j 8
CMake
选项说明:MySQL 5.7 Reference Manual
如果在make 过程中出现类似 Werror=xxx
的错误,可以用以下方案解决。
解决方案:在CMakeLists.txt
文件中增加add_definitions(-w)
配置并启动SQL
使用如下命令可以用来初始化数据库。两个参数的区别是--initialize
会为root@localhost
用户生成一个随机密码,而--initialize-insecure
会设置root@localhost
用户密码为空:
# 为了简单,搞成无密码的
bin/mysqld --initialize-insecure
创建加密连接需要的文件:
# 这一步是否必要未知,或许不需要
bin/mysql_ssl_rsa_setup
启动Mysql-server
bin/mysqld
启动后不要关闭terminal,另开一个terminal启动client
启动Mysql-client
bin/mysql -uroot
然后就可以正常创建表之类的了。
关闭mysql
用 ps
+kill -9 <pid>
命令或者直接关闭terminal
使用clion调试代码
以上都没问题,可以在Clion上尝试了
-
用Clion打开代码目录
-
设置
CMake
参数。点击File
菜单栏,Settings | Build, Execution, Deployment | CMake
,在CMake options
输入框中输入上文执行cmake
命令时的参数。
- 运行/调试
MySQL
。点击Run
菜单栏,Edit Configurations
,左侧CMake Application
列出了MySQL
中的各个程序,例如mysqld
为MySQL Server
,mysql
为MySQL CLient
,可以在对应的Program arguments
中配置各种参数。
我这里啥都没配,找到mysqld就跑起来了
参考
- https://juejin.im/post/6855129007692873736
- https://blog.csdn.net/weixin_38258767/article/details/103756366
- https://www.jianshu.com/p/fd9beb91ad66