首先安裝cmake、gcc
創(chuàng)新互聯(lián)公司主營云南網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都app開發(fā),云南h5微信小程序開發(fā)搭建,云南網(wǎng)站營銷推廣歡迎云南等地區(qū)企業(yè)咨詢
然后~~~
1、解壓mysql文件,tar xf mysql-5.1.51.tar.gz2、cd mysql-5.1.513、#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.1 //這個就是你指定的安裝mysql的位置-DMYSQL_DATADIR=/usr/local/mysql5.6/data -DSYSCONFDIR=/usr/local/mysql5.6/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock #make #make install
用vs code 就可以了。
Visual Studio Code
Visual Studio Code(簡稱VS Code)是由微軟開發(fā)的,同時支持Windows、Linux和macOS操作系統(tǒng)的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發(fā)環(huán)境功能,例如代碼補全(類似于IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數(shù),還支持擴展程序并在編輯器中內置了擴展程序管理的功能。
安裝LLDB
LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統(tǒng)自帶的LLDB,安裝前必須先創(chuàng)建證書否則無法安裝,步驟如下:
創(chuàng)建完成后,開始安裝LLVM
brew install llvm --with-python@2?--with-lldb
安裝插件
VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。
?接下來,為項目配置調試參數(shù)。
配置調試參數(shù)
使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數(shù),通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。
啟動調試
點擊啟動按鈕,啟動后如果沒有設置斷點會mysqld會正常啟動,如果觸發(fā)了斷點會如下圖顯示。
整個調試窗口基本分為六部分,所有的調試操作都在這里完成:
1:?顯示變量信息
2:?設置重點關注的變量
3:?顯示調用棧信息
4:?設置斷點信息,在代碼行號前也可以設置斷點
5:?代碼顯示區(qū)域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop
6:?調試終端輸入輸出區(qū)
斷點設置
在代碼行號前點擊即可在該行為設置斷點,也可以根據(jù)條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動后會按照你設置的條件表達式判斷是否觸發(fā)斷點。
Conditional Breakpoint這種方式用在目標變量達到某條件時觸發(fā)斷點,其余則跳過繼續(xù)執(zhí)行。比如:設置變量等于目標表名時觸發(fā)斷點,其余表則跳過,相對函數(shù)名斷點省去很多手工跳過操作。
遠程調試
假如你想調試遠程Linux服務器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這里以lldb為例。
需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這里
remote$ yum install -y llvm-toolset-7
安裝完成后,啟動lldb-server
remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen?"*:9191"?--server
接下來,在VS Code調試界面中新增配置項。
{
"type":?"lldb",
"request":?"attach",
"name":?"Remote attach",
"program":?"~/mysql5626/usr/local/mysql/bin/mysqld",
"pid":"target_pid",
"initCommands": [
"platform select remote-linux",
"platform connect connect://remote_host:9191"
],
"sourceMap": {
"/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26":?"/Users/hongbin/workbench/mysql-server"
}
},
program:?本機也要拷貝一份目標程序,加載
pid:?填寫遠程主機的mysqld進程id
sourceMap:?填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯(lián)在一起看
注意:記得調試前將代碼切換到與目標程序版本一致的branch
不同linux版本,安裝不同版本的mysql方法各不相同,下面以CentOS 6.5編譯安裝MySQL 5.6.16介紹:
一.準備工作
1.yum安裝各個依賴包
[root@WebServer ~]# yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxml* ncurses-devel ncurses libgcrypt* libtool* cmake openssl openssl-devel bison bison-devel unzip
2.新建mysql組和用戶
[root@WebServer ~]# groupadd mysql
[root@WebServer ~]# useradd -g mysql -s /sbin/nologin mysql
3.目錄準備
[root@WebServer ~]# mkdir -p /webserver/mysql/etc
[root@WebServer ~]# mkdir -p /webserver/mysql/data
[root@WebServer ~]# mkdir -p /webserver/mysql/tmp
[root@WebServer ~]# chown -R mysql.mysql /webserver/mysql
4.解壓MySQL并進入安裝目錄
[root@WebServer ~]# tar zxvf mysql-5.6.16.tar.gz
[root@WebServer ~]# cd mysql-5.6.16
二.編譯并安裝
1.編譯MySQL
[root@WebServer mysql-5.6.16]# cmake -DCMAKE_INSTALL_PREFIX=/webserver/mysql \
-DSYSCONFDIR=/webserver/mysql/etc \
-DMYSQL_DATADIR=/webserver/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/webserver/mysql/tmp/mysqld.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1
2.如果出現(xiàn)以下錯誤
則需要
[root@WebServer mysql-5.6.16]# cd source_downloads/
[root@WebServer source_downloads]# unzip gmock-1.6.0.zip
[root@WebServer source_downloads]# ./configure
[root@WebServer source_downloads]# make
[root@WebServer source_downloads]# cd ..
然后刪除mysql-5.6.16目錄下的CMakeCache.txt重新使用cmake進行編譯安裝
2.安裝
[root@WebServer mysql-5.6.16]# make make install
編譯過程會比較漫長,編譯時間取決于機器的性能
三.MySQL配置
1.客戶端庫文件的鏈接(未執(zhí)行此步驟的話,在PHP編譯時會提示找不到MySQL文件)
[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18
ps:我使用的是64位CentOS,如果使用的是32位請使用ln -s /webserver/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
2.MySQL啟動文件的配置
[root@WebServer mysql-5.6.16]# cp support-files/mysql.server /etc/init.d/mysqld
[root@WebServer mysql-5.6.16]# chmod +x /etc/init.d/mysqld
[root@WebServer mysql-5.6.16]# vim /etc/init.d/mysqld
basedir=/webserver/mysql
datadir=/webserver/mysql/data
//修改以上這2行的路徑即可
3.設置MySQL配置文件
[root@WebServer mysql-5.6.16]# cp support-files/my-default.cnf /webserver/mysql/etc/my.cnf
[root@WebServer mysql-5.6.16]# rm -rf /etc/my.cnf
[root@WebServer mysql-5.6.16]# ln -s /webserver/mysql/etc/my.cnf /etc/my.cnf
4.初始化數(shù)據(jù)庫
[root@WebServer mysql-5.6.16]# cd /webserver/mysql
[root@WebServer mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/webserver/mysql --datadir=/webserver/mysql/data
5.鏈接MySQL命令(這一步可以讓我們方便很多,可以不用寫出命令的路徑,也可以寫入/etc/profile的PATH中)
[root@WebServer ~]# cd /usr/sbin
[root@WebServer sbin]# ln -s /webserver/mysql/bin/* .
6.啟動MySQL并設置為開機啟動
[root@WebServer sbin]# service mysqld start ;chkconfig mysqld on
Starting MySQL.. SUCCESS!
7.設置MySQL root用戶的密碼
[root@WebServer ~]# mysqladmin -u root password 123456
這里將MySQL的root密碼設置為123456,強烈不建議將數(shù)據(jù)庫的密碼設的簡單
8.刪除用戶密碼為空的用戶
[root@WebServer ~]# mysql -u root -p
Enter password:
mysql use mysql;
mysql select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| webserver | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| webserver | | |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)
mysql delete from user where password="";
Query OK, 5 rows affected (0.00 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
mysql exit;
完畢。