1. 如何在Windows下編譯或調試MySQL
用vs code 就可以了。
Visual Studio Code
Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。
安裝LLDB
LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:
創建完成後,開始安裝LLVM
brew install llvm --with-python@2--with-lldb
安裝插件
VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。
接下來,為項目配置調試參數。
配置調試參數
使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。
啟動調試
點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。
整個調試窗口基本分為六部分,所有的調試操作都在這里完成:
1:顯示變數信息
2:設置重點關注的變數
3:顯示調用棧信息
4:設置斷點信息,在代碼行號前也可以設置斷點
5:代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop
6:調試終端輸入輸出區
斷點設置
在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。
Conditional Breakpoint這種方式用在目標變數達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變數等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。
遠程調試
假如你想調試遠程Linux伺服器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這里以lldb為例。
需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這里http://mirror.centos.org/centos/7/sclo/x86_64/rh
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編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看
注意:記得調試前將代碼切換到與目標程序版本一致的branch
2. linux中怎樣安裝mysql
方法/步驟
1
到mysql官網下載mysql編譯好的二進制安裝包,在下載頁面Select Platform:選項選擇linux-generic,然後把頁面拉到底部,64位系統下載Linux - Generic (glibc 2.5) (x86, 64-bit),32位系統下載Linux - Generic (glibc 2.5) (x86, 32-bit)
2
解壓32位安裝包:
進入安裝包所在目錄,執行命令:tar mysql-5.6.17-linux-glibc2.5-i686.tar.gz
3
復制解壓後的mysql目錄到系統的本地軟體目錄:
執行命令:cp mysql-5.6.17-linux-glibc2.5-i686 /usr/local/mysql -r
注意:目錄結尾不要加/
4
添加系統mysql組和mysql用戶:
執行命令:groupadd mysql和useradd -r -g mysql mysql
5
安裝資料庫:
進入安裝mysql軟體目錄:執行命令 cd /usr/local/mysql
修改當前目錄擁有者為mysql用戶:執行命令 chown -R mysql:mysql ./
安裝資料庫:執行命令 ./scripts/mysql_install_db --user=mysql
修改當前目錄擁有者為root用戶:執行命令 chown -R root:root ./
修改當前data目錄擁有者為mysql用戶:執行命令 chown -R mysql:mysql data
到此資料庫安裝完畢
6
啟動mysql服務和添加開機啟動mysql服務:
添加開機啟動:執行命令cp support-files/mysql.server /etc/init.d/mysql,把啟動腳本放到開機初始化目錄
啟動mysql服務:執行命令service mysql start
執行命令:ps -ef|grep mysql 看到mysql服務說明啟動成功,如圖
7
修改mysql的root用戶密碼,root初始密碼為空的:
執行命令:./bin/mysqladmin -u root password '密碼'
8
把mysql客戶端放到默認路徑:
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
注意:建議使用軟鏈過去,不要直接包文件復制,便於系統安裝多個版本的mysql
3. MYSQL怎麼安裝啊
WINDOWS很簡單,就不說了。 linux安裝mysql #tarzxvfmysql-4.0.14.tar.gz-C/setup #cd/setup/mysql-4.0.14 #groupaddmysql #useraddmysql-gmysql-M-s/bin/false #./configure--prefix=/web/mysql指定安裝目錄 --without-debug去除debug模式 --with-extra-charsets=gb2312添加gb2312中文字元支持 --enable-assembler使用一些字元函數的匯編版本 --without-isam去掉isam表類型支持現在很少用了isam表是一種依賴平台的表 --without-innodb去掉innodb表支持innodb是一種支持事務處理的表,適合企業級應用 --with-pthread強制使用pthread庫(posix線程庫) --enable-thread-safe-client以線程方式編譯客戶端 --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static以純靜態方式編譯服務端和客戶端--with-raid激活raid支持 #make #makeinstall #scripts/mysql_install_db生成mysql用戶資料庫和表文件 #cpsupport-files/my-medium.cnf/etc/my.cnf配置文件,有large,medium,small三個環境下的,根據機器性能選擇,如果負荷比較大,可修改裡面的一些變數的內存使用值 #cpsupport-files/mysql.server/etc/init.d/mysqld啟動的mysqld文件 #chmod700/etc/init.d/mysqld #cd/web #chmod750mysql-R #chgrpmysqlmysql-R #chownmysqlmysql/var-R #cd/web/mysql/libexec #cpmysqldmysqld.old #stripmysqld #chkconfig--addmysqld #chkconfig--level345mysqldon #servicemysqldstart #netstat-atln 看看有沒有3306的埠打開,如果mysqld不能啟動,看看/web/mysql/var下的出錯日誌,一般都是目錄許可權沒有設置好的問題 #ln-s/web/mysql/bin/mysql/sbin/mysql #ln-s/web/mysql/bin/mysqladmin/sbin/mysqladmin #mysqladmin-urootpassword"youpassword"#設置root帳戶的密碼 #mysql-uroot-p #輸入你設置的密碼 mysql>usemysql; mysql>deletefromuserwherepassword="";#刪除用於本機匿名連接的空密碼帳號 mysql>flushprivileges; mysql>quit ●安裝DBI和DBDformysql用於提供perl訪問mysql資料庫的介面規范,請確認你已經安裝了perl,一般默認系統都裝上了
4. 如何安裝mysql資料庫5.7
從MSQL官網下載MySQL伺服器安裝軟體包,下面以mysql-installer-community-5.7.3.0-m13.msi為例。
1、雙擊進入安裝
5. linux下怎麼安裝mysql
方法/步驟
到mysql官網下載mysql編譯好的二進制安裝包,在下載頁面Select Platform:選項選擇linux-generic,然後把頁面拉到底部,64位系統下載Linux - Generic (glibc 2.5) (x86, 64-bit),32位系統下載Linux - Generic (glibc 2.5) (x86, 32-bit)
解壓32位安裝包:
進入安裝包所在目錄,執行命令:tar mysql-5.6.17-linux-glibc2.5-i686.tar.gz
復制解壓後的mysql目錄到系統的本地軟體目錄:
執行命令:cp mysql-5.6.17-linux-glibc2.5-i686 /usr/local/mysql -r
注意:目錄結尾不要加/
添加系統mysql組和mysql用戶:
執行命令:groupadd mysql和useradd -r -g mysql mysql
安裝資料庫:
進入安裝mysql軟體目錄:執行命令 cd /usr/local/mysql
修改當前目錄擁有者為mysql用戶:執行命令 chown -R mysql:mysql ./
安裝資料庫:執行命令 ./scripts/mysql_install_db --user=mysql
修改當前目錄擁有者為root用戶:執行命令 chown -R root:root ./
修改當前data目錄擁有者為mysql用戶:執行命令 chown -R mysql:mysql data
到此資料庫安裝完畢
啟動mysql服務和添加開機啟動mysql服務:
添加開機啟動:執行命令cp support-files/mysql.server /etc/init.d/mysql,把啟動腳本放到開機初始化目錄
啟動mysql服務:執行命令service mysql start
執行命令:ps -ef|grep mysql 看到mysql服務說明啟動成功,如圖
修改mysql的root用戶密碼,root初始密碼為空的:
執行命令:./bin/mysqladmin -u root password '密碼'
把mysql客戶端放到默認路徑:
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql
注意:建議使用軟鏈過去,不要直接包文件復制,便於系統安裝多個版本的mysql
6. linux怎麼編譯安裝mysql
不同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.如果出現以下錯誤
則需要
[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.客戶端庫文件的鏈接(未執行此步驟的話,在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.初始化資料庫
[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,強烈不建議將資料庫的密碼設的簡單
8.刪除用戶密碼為空的用戶
[root@WebServer ~]# mysql -u root -p
Enter password:
mysql> use mysql;
mysql> select Host,User,Password from user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | * |
| 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 | * |
+-----------+------+-------------------------------------------+
1 row in set (0.00 sec)
mysql> exit;
完畢。
7. linux 如何編譯安裝mysql
使用binary進行安裝,文件名mysql-standard-5.0.18-linux-i686-glibc23.tar.gz
[1]將上述文件解壓到某處,並將MySQL所以目錄名改為mysql,結果應如/home/xxx/mysql
[2]根據mysql目錄下的INSTALL-BINARY文件來進行安裝
// 加用戶組mysql,以及用戶mysql;該命令無需修改
shell> groupadd mysql
shell> useradd -g mysql mysql
// 以下三步的主要目的是為MySQL解壓目錄做一個鏈接,放到usr/local目錄中
// 首先是進入/usr/local目錄;該命令無需修改
shell> cd /usr/local
// 這一步可以不需要,因為已經解壓了
shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
// 做一個到/home/xxx/mysql的鏈接,放在/usr/local中,該鏈接的名字是mysql。
// 該命令修改為ln -s /home/xxx/mysql mysql
shell>
ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
// 進入/home/xxx/mysql目錄,/usr/local/mysql是到/home/xxx/mysql的鏈接
shell>
cd mysql
// 對MySQL進行初始化(如果以前已經安裝過MySQL,這一步可以簡略);該命令無需修改
shell> scripts/mysql_install_db --user=mysql
// 變更所有權;該命令無需修改
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
// 啟動MySQL伺服器;該命令無需要修改
shell> bin/mysqld_safe --user=mysql &
[3]進入MySQL應用環境
進入mysql目錄下的bin目錄,運行命令./mysql -u root
-p,此時將出現password:(要求輸入密碼),但默認情況下root用戶沒有密碼,所以回車即可。此時將進入MySQL界面,當然仍然只是個命令行窗口而以。
[4]簡單使用MySQL
在MySQL環境中運行命令show databases;,將會顯示已經有的資料庫(如test);運行命令use test,將進入test資料庫...
注意:如果在運行./mysql -u root -p之後,報
Can't connect to local MySQL server through socket '/tem/mysql.sock'
的錯誤,那麼可能有以下幾種情況:
[1]mysql.sock並不在/tmp目錄下,而是在其它某個目錄下(如,/var/lib/mysql目錄)。這時只需要將這個mysql.sock做鏈接到/tmp目錄下,運行命令:
ln -s MYSQL.SOCK_PATH /tmp/mysql.sock
[2]在同學的筆記本的Linux中,會在/tmp下生成mysql.sock,但重新啟動Linux後,該文件被刪除。這時也可以用情況2中的解決方法,或者每次都運行命令:./mysqld_safe --user=mysql &