MySQL Server 构建、安装、运行与调试
MySQL
是一个开源的关系型数据库。
本文以 8.0.40
版本为例,记录 MySQL Server 的构建、安装、运行与调试。
环境变量
为了便于描述,本文的操作都会在一个工作路径中执行。
所以直接给这个路径配一个环境变量 MYSQL_WORKSPACE
:
export MYSQL_WORKSPACE=${HOME}/mysql
为了方便,再配置一些其他环境变量:
# 安装路径
export MYSQL_INSTALL=${MYSQL_WORKSPACE}/install
export PATH=${MYSQL_INSTALL}/bin:${PATH}
# 数据目录
export MYSQL_DATA=${MYSQL_WORKSPACE}/data
构建并安装 MySQL Server
先去 GitHub 上找到 MySQL Server 8.0.40 版本的 tag:
https://github.com/mysql/mysql-server/releases/tag/mysql-8.0.40
然后下载代码、解压:
cd ${MYSQL_WORKSPACE}
wget https://github.com/mysql/mysql-server/archive/refs/tags/mysql-8.0.40.tar.gz
tar -zxf mysql-8.0.40.tar.gz
解压之后 MySQL Server 的项目应该会在 ${MYSQL_WORKSPACE}/mysql-server-mysql-8.0.40
目录里面。
于是直接进去用 CMake 配置项目并生成构建脚本。
cd ${MYSQL_WORKSPACE}/mysql-server-mysql-8.0.40
mkdir -p build && cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=${MYSQL_INSTALL} \
-DMYSQL_DATADIR=${MYSQL_DATA} \
-DWITH_DEBUG=ON \
-DDOWNLOAD_BOOST=ON \
-DWITH_BOOST=${MYSQL_WORKSPACE}/boost
这个命令通过 -D
参数指定了一些 CMake 变量:
CMAKE_INSTALL_PREFIX
:安装路径。DMYSQL_DATADIR
:MySQL 数据目录,可以通过SELECT @@datadir;
查询。WITH_DEBUG
:调试支持。DOWNLOAD_BOOST
:下载 Boost 库WITH_BOOST
:用于存放 Boost 库的路径
如果 Boost 库下载失败,错误日志里会提示下载路径,可以尝试手动下载并解压:
cd ${MYSQL_WORKSPACE}
mkdir -p boost && cd boost
wget https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2
tar -jxf boost_1_77_0.tar.bz2
弄好之后重新回去执行上面的 cmake
命令即可
CMake 在执行过程中可能会报一些依赖库缺失的错误,按照提示手动安装即可。 这里记录一下我的安装过程(发行版是 openEuler 22.03 LTS SP4):
dnf install openssl-devel
dnf install libtirpc-devel
dnf install rpcgen
最后用 make
构建即可:
cd ${MYSQL_WORKSPACE}/mysql-server-mysql-8.0.40/build
make -sj8 && make install
可以检查一下安装是否正常:
mysqld --version
初始化数据库
mysqld --initialize-insecure
如果之前的 cmake
命令执行正确,数据库目录会被初始化在 ${MYSQL_DATA}
中。
运行数据库
mysqld &
连接数据库
mysql -u root --skip-password
可以尝试输出一下版本号:
mysql> select version();
+--------------+
| version() |
+--------------+
| 8.0.40-debug |
+--------------+
1 row in set (0.00 sec)
调试
使用 VS Code 调试,需要安装 C/C++ 插件。
可以直接 attach 到 mysqld
进程中。
如果前面环境变量配置正确,可以直接使用这个 launch.json
:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "${env:MYSQL_INSTALL}/bin/mysqld",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
Thanks for reading! Read other posts?