vscode远程debug mysql
vscode远程debug mysql
使用自己下载的源代码编译并安装
〇可以提前安装的依赖
apt install libssl-dev
apt install pkg-config
①安装依赖
个人本地操作系统为Ubuntu18.04LTS,编译安装需要以下依赖。
apt install build-essential cmake bison libncurses5-dev libssl-dev pkg-config
详细依赖列表参考https://dev.mysql.com/doc/refman/8.0/en/source-installation.html。如果有其他缺失的依赖,cmake的时候会检查出来,甚至会打印输出具体的apt / yum命令,把命令拷下来执行一下再编译即可。
②下载源码
源码包分为带boost版和不带boost版的,方便起见直接下载带boost的。
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.16.tar.gz
tar xzv -f mysql-boost-8.0.16.tar.gz
cd mysql-8.0.16/ ; ls
③编译安装
cmake的完整选项列表参考https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html。
cmake时按照提示添加-DFORCE_INSOURCE_BUILD=1
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON -DFORCE_INSOURCE_BUILD=1
make && make install
④初始配置
详细参考https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html。
添加mysql用户组和配置文件权属。
groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这一步会打印输出随机生成的root账号初始密码,找个小本本记下来待会要用这个密码连接登录的。[Server] A temporary password is generated for root@localhost: T9Er+PlKFu-6
生成ssl(可选)。
/usr/local/mysql/bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
新建一个全局用的简单的配置文件。
vim /etc/my.cnf
然后写入以下内容
[client]
socket = /tmp/mysql.sock[mysqld]
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
⑤开启服务
详细参考https://dev.mysql.com/doc/refman/8.0/en/postinstallation.html。
配置mysqld服务。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults
service mysqld start
添加PATH。
echo -e '# MySQL PATH\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile
source /etc/profile
连接登录MySQL并修改root账户密码(需要使用第④步生成的密码)。
mysql -uroot -p'!YAH0uS%AS>q'
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '1024';
因为本次安装只是个人使用(非生产环境),所以可以额外的将账户密码信息写入配置文件,以后连接就不用再输入了(懒人专用)。然后进入MySQL修改开启root账户可远程连接。
把这几行添加到client选项组下面
vim /etc/my.cnfuser = root
password = 1024
port = 3306
然后试着启动一下mysql,其下的 UPDATE 语句是为了使远程用户也能连接上mysql。
root@zoo:/home/zoo/mysql-8.0.16# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.16 Source distributionCopyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> UPDATE `mysql`.`user` SET `Host` = '%' WHERE `User` = 'root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)mysql>
启动成功之后,按照以下方法进行配置:
一、插件与依赖安装
在本地机器上:
- 安装 目前最新版本支持 Remote - Development 插件
- 安装 VSCode 扩展 “Remote - Development”, 方法是左下角
管理(⚙)
->扩展
, 直接搜索商店 - 安装兼容 OpenSSH 的 SSH 客户端, 我安装的
在远程机器上:
- 编译安装mysql(注意编译时需开启 -DWITH_DEBUG=1),并且启动mysql实例,这里我是在centos(CentOS Linux release 7.7.1908)上面编译安装的mysql8.0.18(为方便没有 mysql编译安装经验的读者回头另写一篇 mysql8.0.18编译安装)
- 安装 gdb,
yum install gdb
- 安装 gdbserver,
yum install gdb-gdbserver
- 启动 ssh 服务端, 通常默认已经启动
二、vscode ssh打开对应的文件夹
三、关闭正在运行的mysqld实例
service mysqld stop
四、创建debug用的配置文件
client端配置:
首先创建一个.vscode文件夹,然后chmod 777 -R .vscode
赋予权限
在.vscode下创建配置文件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 remote launch","type": "cppdbg","request": "launch",// 前面如果按照这教程安装,program不需要修改,makeinstall的路径就是这个。"program": "/usr/local/mysql/bin/mysqld","stopAtConnect": true,"environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb","miDebuggerArgs": "gdb","linux": {"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","miDebuggerServerAddress": "${机器的ip}:2333"},"logging": {"moduleLoad": false,"engineLogging": false,"trace": false,},"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"cwd": "${workspaceFolder}",}]
}
五、debug
server端:
首先启动一个gdbserver:
gdbserver localhost:2333 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
或者
gdbserver localhost:2333 /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
随便挑一个吧,我也忘记了是哪个才能启动成功了。
按理说两个是一样的,因为基本信息都在my.cnf配置好了。
然后对应输出:
此时就可以开始使用vscode进行debug了。
client端:
output界面出现这个提示,先点继续,跳过:
然后就运行到我自己打的断点处了!
继续点击继续按钮
直至显示这样的输出以及表示正在运行:
这时候回头看开启gdbserver的服务器,显示ready for connections,那就是成功了。
这时候可以去连接3306端口登录服务器,也是成功的:
大功告成!
遇到的一些问题
debug运行过程出现了这个问题:
有可能是启动了多个mysql实例,然后使用的同一份配置导致冲突了。尝试将ibdata1文件删掉(这是错误的做法),后面只能重新安装。
另一个问题:
重新make install之后启动,出现了这个问题:
这时候把my.cnf里的socket路径换掉:
[client]
socket = /tmp/mysqly.socok
user = root
password = 1024
port = 3306[mysqld]
socket = /tmp/mysqly.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
还是没用,把登录语句换成这样,不走本机socket算了,然后就能登录进去了。
mysql -h127.0.0.1 -P3306 -u root -p'w/hqkSt+d3zq'
参考博客:
Ubuntu Linux系统MySQL8.0源码编译安装笔记_蛙鳜鸡鹳狸猿的博客-CSDN博客_ubuntu cannot find appropriate system libraries
windows系统vscode远程调试mysql_ITPUB博客
vscode远程debug mysql相关推荐
- 用mysqldump远程备份mysql数据库
用mysqldump远程备份mysql数据库 mysqldump是备份mysql数据库的一种好工具.它相对于用phpmyadmin等备份工具更加快速,又避免受php.ini等的限制,在windows系 ...
- 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序
必看: Windows使用VSCode远程Linux(ConteOS)开发/调试C/C++(超详细):https://blog.csdn.net/zy_workjob/article/details/ ...
- IDEA配置远程debug
1.背景 本地打断点debug程序我们都不陌生,但是有些时候我们可能需要把服务运行在远程服务器上调试,那怎么让服务在运行时跑到我们本地IDE的断点呢.这里面Java实现了一套远程debug协议,我们不 ...
- 记录windows上的VSCODE 远程到linux编译代码机器上的一些问题
设置windows SSH 到linux时免密码登录的方法: 将C:\Users\Administrator\.ssh\id_rsa.pub中的公钥字符串复制,追加到linux ~/.ssh/auth ...
- 一文掌握vscode远程gdb调试
0 背景 最近在同事的安利下,尝试了用 vscode 做 gdb 调试,用完之后,"真香". 话不多说,本文要实现的是:在 windows 端远程调试 linux 服务器和 arm ...
- 【爬坑】远程连接 MySQL 失败
问题描述 远程连接 MySQL 服务器失败 报以下错误 host 192.168.23.1 is not allowed to connect to mysql server 解决方案 在服务器端打开 ...
- 如何用sqlyog实现远程连接mysql
1,sqlyog客户端,用root用户远程链接mysql时,提示"访问被拒绝",在网上搜索了一下原因. 原来是mysql没有授权其远程链接,所以你只能在客户端里面链接. 怎么解决呢 ...
- 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) 参考文章: (1)解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) (2)https://www. ...
- windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法
windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 参考文章: (1)windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 (2)https://www. ...
最新文章
- 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
- 实际开发什么场景用到线程池_线程池的具体业务场景分析
- Apache 服务器的配置
- php网页论坛制作教程,PHP开发 小型论坛教程之登录HTML页面
- linux培训课程第六天:ppt以及笔记
- 如何通过Maven的Tomcat插件运行Web工程
- 第三十期:BAT 为什么都看上了重庆?
- Spring学习笔记之AOP配置篇(一) 注解配置
- 【scrapy windows环境下安装遇到的问题】
- 2.GET与POST的区别
- java入门之IDE开发工具:简介·下载·安装
- 基于51单片机的音乐盒彩灯频谱喷泉原理图方案设计
- 利用python进行TEQC质量检核结果绘图
- 带你轻松玩转“高颜值”3D图表
- [Pandas] 缺失值删除 df.dropna()
- 【来日复制粘贴】使某列筛选的结果映射到标题部分
- 帝国CMS仿《3641图库》模板/图片网站源码/带WAP手机站带数据
- MMS制造报文系统和GOOSE报文
- Java微服务学习笔记(一):微服务架构的概念理解
- android fm页面布局,荔枝FM Android客户端产品体验报告
热门文章
- Android 5.0,6.0,7.0,8.0, 9.0新特性
- vue js中添加图片
- python类中的单下划线与双下划线
- 使用java读取生成二维码
- 三步换系统 win10到Ubuntu20.04
- Vue实现手风琴效果
- 联想台式一体机win10重装win7系统
- 什么是监控知识体系?
- php 商品图列表,zencart后台商品列表添加商品图像预览
- 【AUTOSAR-E2E】-1.1-End-to-End通信保护介绍(Functional Safety功能安全相关)