赞
踩
参考链接:
https://zhuanlan.zhihu.com/p/651665372
https://zhuanlan.zhihu.com/p/606732848
# 创建存放源码的根目录 mkdir -p /root/code # 进入存放源码的根目录 cd /root/code # 安装 wget、下载源码 & 解压 yum install wget -y wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.34.tar.gz tar zxvf mysql-boost-8.0.34.tar.gz # 用于安装 cmake3 的 yum 源 yum -y install epel-release # 用于安装高版本 gcc、gcc-c++、make 的 yum 源 yum -y install centos-release-scl # 安装依赖软件 yum -y install devtoolset-11-gcc \ devtoolset-11-gcc-c++ \ devtoolset-11-make \ cmake3 \ openssl-devel \ ncurses-devel \ bison # 安装 gdb yum -y install devtoolset-11-gdb # 让 scl 环境临时生效 source /opt/rh/devtoolset-11/enable # 让 scl 环境永久生效 vi /etc/profile.d/scl.sh # 把以下内容写入 scl.sh,然后保存退出 source /opt/rh/devtoolset-11/enable
# config cd /root/code/mysql-8.0.34 cmake3 . \ -DWITH_BOOST=./boost/ \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DWITH_DEBUG=1 \ -DFORCE_INSOURCE_BUILD=1 ## build & install #这里的 -j2 是并发两核 CPU 去构建,因为我的虚拟机只有两核 #但核数不是越高越好,有可能因为官方的构建文件没有处理好并发, #导致更高的并发时编译直接报错,反正我 -j8 时报错了 #如果追求安全,不加并发也是个选择,就是慢点 make -j2 && make install ## 查看结果 echo $? ll /usr/local/mysql/bin/mysql
问题:
collect2: fatal error: ld terminated with signal 9 [Killed]
原因:内存不足,开启了并发编译,加内存或者2改成1
问题:8.0.34和5.7.34都安装不了,mysqld报错
解决:8.0.32安装成功
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.32.tar.gz
tar zxvf mysql-boost-8.0.32.tar.gz
cd /root/code/mysql-8.0.32
cmake3 . \
-DWITH_BOOST=./boost/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DWITH_DEBUG=1 \
-DFORCE_INSOURCE_BUILD=1
# 创建配置文件目录 & 数据目录 mkdir -p /mysql/8.0.32/data #你可以改这里 # 创建用户 & 组 groupadd mysql useradd -g mysql mysql # 创建配置文件 vi /etc/my.cnf # 把以下内容覆盖到 my.cnf [mysqld] user=mysql innodb_file_per_table=1 server_id=100 basedir=/usr/local/mysql datadir=/mysql/8.0.32/data #你可以改这里 log-error=/mysql/8.0.32/data/error.log #你可以改这里 # 初始化数据目录 /usr/local/mysql/bin/mysqld --initialize-insecure
安装插件:Chinese、Remote、C/C++
ssh root@172.31.0.10
远程插件安装:C/C++
配置VS Code插件
cd /root/code/mysql-8.0.32
mkdir .vscode
cd .vscode
vi launch.json
内容:
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "/usr/local/mysql/bin/mysqld", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }
启动gdb
终端登录mysql
/usr/local/mysql/bin/mysql
打断点
执行语句,查看变量:
SELECT host, user FROM mysql.user;
问题:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
解决:先把断点打开,然后打断点,执行登录mysql。
执行顺序:先登录MySQL,再打断点,再执行select语句查询,再看调试界面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。