03 mysql 的环境搭建
前言
这一系列文章主要包含的内容主要是 各种常用软件的调试环境的搭建
主要的目的是 搭建一个可打断点的一个调试环境
c 系列 主要是基于 clion 调试, java 系列主要是基于 idea 调试, js 系列主要是基于 webstorm 调试
需要有一定的 c, c++, java, js 相关基础
基于的环境是一个 ubuntu16.04 desktop, 初始的时候 仅仅更新了源, 安装了 clion
redis, nginx, mysql, vsftpd
javac, javap, jstack, jmap, jinfo
kafka,
spark, flink
coreutils, glibc, gdb
hotspotVM, linux
... 等等其他
编译 mysql-5.7.43
首先去官方网站下载最新源码, 然后拷贝自 目标虚拟机, 下载 with-boost 版本
文件信息如下
开始准备编译, 编译之后 src 下面的 mysqld, mysql 即为编译好的 binary
5.x 需要安装一些 附加的软件, 比如 cmake 等等
apt-get install cmake
apt-get install libssl-dev
apt-get install libncurses5-dev
执行 cmake 如下
root@ubuntu:~/Desktop/WorkStations/mysql-5.7.43# pwd
/root/Desktop/WorkStations/mysql-5.7.43
root@ubuntu:~/Desktop/WorkStations/mysql-5.7.43# cmake . -DWITH_BOOST=./boost/-- Running cmake version 3.5.1
-- Could NOT find Git (missing: GIT_EXECUTABLE)
-- Configuring with MAX_INDEXES = 64U
-- CMAKE_GENERATOR: Unix Makefiles
-- SIZEOF_VOIDP 8
-- MySQL 5.7.43
-- Packaging as: mysql-5.7.43-Linux-x86_64
-- Local boost dir /root/Desktop/WorkStations/mysql-5.7.43/boost/boost_1_59_0
-- Found /root/Desktop/WorkStations/mysql-5.7.43/boost/boost_1_59_0/boost/version.hpp
-- BOOST_VERSION_NUMBER is #define BOOST_VERSION 105900
-- BOOST_INCLUDE_DIR /root/Desktop/WorkStations/mysql-5.7.43/boost/boost_1_59_0
-- NUMA library missing or required version not available
-- ZLIB_VERSION (bundled) is 1.2.13
-- ZLIB_INCLUDE_DIR /root/Desktop/WorkStations/mysql-5.7.43/extra/zlib/zlib-1.2.13
-- ZLIB_LIBRARY zlib
// 省略部分输出
-- CMAKE_CXX_FLAGS_RELEASE: -ffunction-sections -fdata-sections -O3 -DNDEBUG
-- CMAKE_CXX_FLAGS_MINSIZEREL: -ffunction-sections -fdata-sections -Os -DNDEBUG
-- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_EXE_LINKER_FLAGS
-- CMAKE_MODULE_LINKER_FLAGS
-- CMAKE_SHARED_LINKER_FLAGS
-- Configuring done
-- Generating done
-- Build files have been written to: /root/Desktop/WorkStations/mysql-5.7.43
开始编译
root@ubuntu:~/Desktop/WorkStations/mysql-5.7.43# make
Scanning dependencies of target abi_check
[ 0%] Built target abi_check
Scanning dependencies of target INFO_SRC
[ 0%] Built target INFO_SRC
Scanning dependencies of target lz4_lib
[ 0%] Building C object CMakeFiles/lz4_lib.dir/extra/lz4/lz4-1.9.4/lib/lz4.c.o
[ 0%] Building C object CMakeFiles/lz4_lib.dir/extra/lz4/lz4-1.9.4/lib/lz4frame.c.o
[ 0%] Building C object CMakeFiles/lz4_lib.dir/extra/lz4/lz4-1.9.4/lib/lz4hc.c.o
[ 0%] Building C object CMakeFiles/lz4_lib.dir/extra/lz4/lz4-1.9.4/lib/xxhash.c.o
[ 0%] Linking C static library archive_output_directory/liblz4_lib.a
// 省略部分输出
[100%] Linking CXX executable mysql_client_test_embedded
[100%] Built target mysql_client_test_embedded
Scanning dependencies of target mysql_embedded
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/completion_hash.cc.o
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/mysql.cc.o
[100%] Building CXX object libmysqld/examples/CMakeFiles/mysql_embedded.dir/__/__/client/readline.cc.o
[100%] Linking CXX executable mysql_embedded
[100%] Built target mysql_embedded
Scanning dependencies of target my_safe_process
[100%] Building CXX object mysql-test/lib/My/SafeProcess/CMakeFiles/my_safe_process.dir/safe_process.cc.o
[100%] Linking CXX executable my_safe_process
[100%] Built target my_safe_process
root@ubuntu:~/Desktop/WorkStations/mysql-5.7.43#
输出的 binary 如下
root@ubuntu:~/Desktop/WorkStations/mysql-5.7.43# ls -l sql | grep mysql
-rwxr-xr-x 1 root root 216039824 Jul 29 19:52 mysqld
-rw-r--r-- 1 7161 31415 350293 Jun 21 06:02 mysqld.cc
-rw-r--r-- 1 7161 31415 4172 Jun 21 06:02 mysqld_daemon.cc
-rw-r--r-- 1 7161 31415 1368 Jun 21 06:02 mysqld_daemon.h
-rw-r--r-- 1 7161 31415 40746 Jun 21 06:02 mysqld.h
-rw-r--r-- 1 7161 31415 1602 Jun 21 06:02 mysqld_suffix.h
-rw-r--r-- 1 7161 31415 9184 Jun 21 06:02 mysqld_thd_manager.cc
-rw-r--r-- 1 7161 31415 7793 Jun 21 06:02 mysqld_thd_manager.h
-rwxr-xr-x 1 root root 5258136 Jul 29 19:52 mysql_tzinfo_to_sql
clion 中调试
clion 中打开 mysql-5.7.43 项目
新建 make application, 配置名称
target 配置 make 相关, build 配置 Makefile 中 build 的命令, clean 配置 Makefile 中 clean 的命令
executable 配置编译好的 mysql 的可执行文件
program arguments 即为 mysql 所需要的参数, 这里配置为 --user=root, 表示以 root 用户启动 mysql
报错如下, 创建 默认的数据文件夹
执行命令如下 初始化 数据目录
sql/mysqld --user=root --initialize
然后 启动项目
客户端这边 连接, 进入 断点
完