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相关推荐

  1. 用mysqldump远程备份mysql数据库

    用mysqldump远程备份mysql数据库 mysqldump是备份mysql数据库的一种好工具.它相对于用phpmyadmin等备份工具更加快速,又避免受php.ini等的限制,在windows系 ...

  2. 在Windows上使用VSCode远程链接到Linux上开发并调试C++程序

    必看: Windows使用VSCode远程Linux(ConteOS)开发/调试C/C++(超详细):https://blog.csdn.net/zy_workjob/article/details/ ...

  3. IDEA配置远程debug

    1.背景 本地打断点debug程序我们都不陌生,但是有些时候我们可能需要把服务运行在远程服务器上调试,那怎么让服务在运行时跑到我们本地IDE的断点呢.这里面Java实现了一套远程debug协议,我们不 ...

  4. 记录windows上的VSCODE 远程到linux编译代码机器上的一些问题

    设置windows SSH 到linux时免密码登录的方法: 将C:\Users\Administrator\.ssh\id_rsa.pub中的公钥字符串复制,追加到linux ~/.ssh/auth ...

  5. 一文掌握vscode远程gdb调试

    0 背景 最近在同事的安利下,尝试了用 vscode 做 gdb 调试,用完之后,"真香". 话不多说,本文要实现的是:在 windows 端远程调试 linux 服务器和 arm ...

  6. 【爬坑】远程连接 MySQL 失败

    问题描述 远程连接 MySQL 服务器失败 报以下错误 host 192.168.23.1 is not allowed to connect to mysql server 解决方案 在服务器端打开 ...

  7. 如何用sqlyog实现远程连接mysql

    1,sqlyog客户端,用root用户远程链接mysql时,提示"访问被拒绝",在网上搜索了一下原因. 原来是mysql没有授权其远程链接,所以你只能在客户端里面链接. 怎么解决呢 ...

  8. 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)

    解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) 参考文章: (1)解决远程连接mysql很慢的方法(mysql_connect 打开连接慢) (2)https://www. ...

  9. windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法

    windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 参考文章: (1)windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法 (2)https://www. ...

最新文章

  1. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
  2. 实际开发什么场景用到线程池_线程池的具体业务场景分析
  3. Apache 服务器的配置
  4. php网页论坛制作教程,PHP开发 小型论坛教程之登录HTML页面
  5. linux培训课程第六天:ppt以及笔记
  6. 如何通过Maven的Tomcat插件运行Web工程
  7. 第三十期:BAT 为什么都看上了重庆?
  8. Spring学习笔记之AOP配置篇(一) 注解配置
  9. 【scrapy windows环境下安装遇到的问题】
  10. 2.GET与POST的区别
  11. java入门之IDE开发工具:简介·下载·安装
  12. 基于51单片机的音乐盒彩灯频谱喷泉原理图方案设计
  13. 利用python进行TEQC质量检核结果绘图
  14. 带你轻松玩转“高颜值”3D图表
  15. [Pandas] 缺失值删除 df.dropna()
  16. 【来日复制粘贴】使某列筛选的结果映射到标题部分
  17. 帝国CMS仿《3641图库》模板/图片网站源码/带WAP手机站带数据
  18. MMS制造报文系统和GOOSE报文
  19. Java微服务学习笔记(一):微服务架构的概念理解
  20. android fm页面布局,荔枝FM Android客户端产品体验报告

热门文章

  1. Android 5.0,6.0,7.0,8.0, 9.0新特性
  2. vue js中添加图片
  3. python类中的单下划线与双下划线
  4. 使用java读取生成二维码
  5. 三步换系统 win10到Ubuntu20.04
  6. Vue实现手风琴效果
  7. 联想台式一体机win10重装win7系统
  8. 什么是监控知识体系?
  9. php 商品图列表,zencart后台商品列表添加商品图像预览
  10. 【AUTOSAR-E2E】-1.1-End-to-End通信保护介绍(Functional Safety功能安全相关)