在我們?nèi)粘I钪信紶枙?huì)遇到一些自己不知道如何解決的問(wèn)題,比如使用安裝好的mysql。那么我們應(yīng)該怎樣解決這種自己不知道如何使用安裝好的mysql的情況呢?那么接下來(lái)就由我來(lái)介紹一下使用安裝好的mysql的步驟吧。
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的翁牛特網(wǎng)站建設(shè)公司,翁牛特接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行翁牛特網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
本次操作以Dell電腦為例,具體操作步驟如下:
第一步:
首先,打開(kāi)MySQLWorkbench,雙擊打開(kāi)即可。打開(kāi)后的界面如下所示,然后選擇數(shù)據(jù)庫(kù)實(shí)例,雙擊進(jìn)行登錄。圖中數(shù)據(jù)庫(kù)的實(shí)例是LocalinstanceMYSQL57
第二步:
然后,輸入用戶名和密碼進(jìn)行登錄。如下圖所示:
第三步:
登錄成功后,界面如下所示。其中,區(qū)域1顯示的是數(shù)據(jù)庫(kù)服務(wù)器中已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)列表。區(qū)域2是關(guān)于數(shù)據(jù)庫(kù)的操作列表。區(qū)域三是sql的編輯器和執(zhí)行環(huán)境,區(qū)域4是執(zhí)行結(jié)果的列表
第四步:
在sql的編輯器中輸入測(cè)試語(yǔ)句,如圖所示,其中world數(shù)據(jù)庫(kù)是mysql自帶的測(cè)試數(shù)據(jù)庫(kù),然后選擇執(zhí)行(或者使用快捷鍵ctrl+enter)。執(zhí)行成功后,查詢結(jié)果會(huì)顯示在下面的列表中。
第五步:
使用完畢后,直接退出,并且如果無(wú)需數(shù)據(jù)庫(kù)的后繼操作的話,記得關(guān)掉MySQL的服務(wù)
看了我的方法,現(xiàn)在你學(xué)會(huì)如何使用安裝好的mysql了嗎?學(xué)會(huì)了的話就快快把這個(gè)方法分享出去,讓更多的人知道如何使用安裝好的mysql。以上就是使用安裝好的mysql的步驟。
本文章基于Dell品牌、Windows10系統(tǒng)撰寫(xiě)的。
前幾天看到姜老師的舊文 用 VSCode 編譯和調(diào)試 MySQL,每個(gè) DBA 都應(yīng) get 的小技能[1] , 文末留了一個(gè)思考題,如何修改源碼,自定義版本,使得 select version() 輸出自定義內(nèi)容
調(diào)試過(guò)程參考 macOS VSCode 編譯調(diào)試 MySQL 5.7[2]
內(nèi)部 Item 對(duì)象參考 從SQL語(yǔ)句到MySQL內(nèi)部對(duì)象[3]
源碼面前沒(méi)有秘密,建義對(duì) DB 感興趣的嘗試 debug 調(diào)試。本文環(huán)境為 mac + vscode + lldb
vscode 插件:
mysql 源碼:
補(bǔ)?。? MySQL = 8.0.21 需要對(duì) cmake/mysql_version.cmake 文件打補(bǔ)丁 (沒(méi)有嚴(yán)格測(cè)試所有版本)
創(chuàng)建 cmake-build-debug 目錄,后續(xù) mysql 編譯結(jié)果,以及啟動(dòng)后生成的文件都在這里
在 mysql 工程目錄下面創(chuàng)建 .vscode/settings.json 文件
內(nèi)容沒(méi)啥好說(shuō)的,都是指定目錄及 boost 配置,其中 WITH_DEBUG 打開(kāi) debug 模式,會(huì)在 /tmp/debug.trace 生成 debug 信息
View - Command Palette - CMake: Configure 執(zhí)行后生成 cmake 配置
View - Command Palette - CMake: Build 編譯生成最終 mysql 相關(guān)命令
發(fā)現(xiàn)老版本編譯很麻煩,各種報(bào)錯(cuò),mysql 5.7 代碼量遠(yuǎn)超過(guò) 5.5, 只能硬著頭皮看 5.7
首先初始化 my.cnf 配置,簡(jiǎn)單的就可以,共它均默認(rèn)
初始化數(shù)據(jù)文件,非安全模式,調(diào)試用
由于用 vscode 接管 mysql, 所以需要配置 .vscode/launch.json
然后點(diǎn)擊 run and debug mysqld
mysql 啟動(dòng),看到輸出日志無(wú)異常,此時(shí)可以用 mysql-client 連接
首先在 sql_parser.cc:5435 處打斷點(diǎn)
mysql_parse 是 sql 處理的入口,至于 tcp connection 連接先可以忽略
執(zhí)行上述 sql 自動(dòng)跳轉(zhuǎn)到斷點(diǎn)處, Step Into , Step Over , Step Out 這些調(diào)試熟悉下即可
接下來(lái)分別調(diào)用主要函數(shù): mysql_execute_command , execute_sqlcom_select , handle_query , select-join-exec() , Query_result_send::send_data , Item::send , Item_string:val_str , Protocol_text::store , net_send_ok
啟動(dòng) mysql 時(shí) init_common_variables 會(huì)初始化一堆變量,其中會(huì)調(diào)用 set_server_version 生成版本信息,修改這個(gè)就可以
看好條件編譯的是哪塊,修改即可, 重新 CMake: Build 編譯再運(yùn)行
這里不做過(guò)深分析,簡(jiǎn)單講
sql_yacc.cc 函數(shù) PTI_function_call_generic_ident_sys 解析 sql, 識(shí)別出 version() 是一個(gè)函數(shù)調(diào)用
find_native_function_builder 查找 hash 表,找到對(duì)應(yīng) version 函數(shù)注冊(cè)的單例工廠函數(shù)
mysql 啟動(dòng)時(shí)調(diào)用 item_create_init 將這些函數(shù) builder 注冊(cè)到 hash 表 native_functions_hash
MySQL 代碼太龐大,5.1 大約 100w 行,5.5 130w 行,5.7 以后 330w 行,只能挑重點(diǎn)讀源碼。最近很多群里的人在背八股,沒(méi)必要,有那時(shí)間學(xué)著調(diào)試下源碼,讀讀多好
原文出處:
用vs code 就可以了。
Visual Studio Code
Visual Studio Code(簡(jiǎn)稱(chēng)VS Code)是由微軟開(kāi)發(fā)的,同時(shí)支持Windows、Linux和macOS操作系統(tǒng)的開(kāi)源文本編輯器。它支持調(diào)試,內(nèi)置了Git 版本控制功能,同時(shí)也具有開(kāi)發(fā)環(huán)境功能,例如代碼補(bǔ)全(類(lèi)似于IntelliSense)、代碼片段、代碼重構(gòu)等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤(pán)快捷方式、編輯器屬性和其他參數(shù),還支持?jǐn)U展程序并在編輯器中內(nèi)置了擴(kuò)展程序管理的功能。
安裝LLDB
LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統(tǒng)自帶的LLDB,安裝前必須先創(chuàng)建證書(shū)否則無(wú)法安裝,步驟如下:
創(chuàng)建完成后,開(kāi)始安裝LLVM
brew install llvm --with-python@2?--with-lldb
安裝插件
VS Code自帶有debug功能,這里我推薦使用LLDB Debugger插件。
?接下來(lái),為項(xiàng)目配置調(diào)試參數(shù)。
配置調(diào)試參數(shù)
使用VS Code打開(kāi)MySQL源碼目錄,在側(cè)邊欄選擇debug欄目,添加配置,program輸入需要調(diào)試的程序路徑,這里選擇你編譯好的mysqld路徑,args輸入程序啟動(dòng)所需的參數(shù),通常會(huì)指定mysqld的配置文件。這樣就配置好了,是不是很簡(jiǎn)單。
啟動(dòng)調(diào)試
點(diǎn)擊啟動(dòng)按鈕,啟動(dòng)后如果沒(méi)有設(shè)置斷點(diǎn)會(huì)mysqld會(huì)正常啟動(dòng),如果觸發(fā)了斷點(diǎn)會(huì)如下圖顯示。
整個(gè)調(diào)試窗口基本分為六部分,所有的調(diào)試操作都在這里完成:
1:?顯示變量信息
2:?設(shè)置重點(diǎn)關(guān)注的變量
3:?顯示調(diào)用棧信息
4:?設(shè)置斷點(diǎn)信息,在代碼行號(hào)前也可以設(shè)置斷點(diǎn)
5:?代碼顯示區(qū)域,上方是調(diào)試按鈕,包括 continue/stepover/step in/step out/restart/stop
6:?調(diào)試終端輸入輸出區(qū)
斷點(diǎn)設(shè)置
在代碼行號(hào)前點(diǎn)擊即可在該行為設(shè)置斷點(diǎn),也可以根據(jù)條件設(shè)置斷點(diǎn)。以設(shè)置ConditionalBreakpoint為例,當(dāng)程序啟動(dòng)后會(huì)按照你設(shè)置的條件表達(dá)式判斷是否觸發(fā)斷點(diǎn)。
Conditional Breakpoint這種方式用在目標(biāo)變量達(dá)到某條件時(shí)觸發(fā)斷點(diǎn),其余則跳過(guò)繼續(xù)執(zhí)行。比如:設(shè)置變量等于目標(biāo)表名時(shí)觸發(fā)斷點(diǎn),其余表則跳過(guò),相對(duì)函數(shù)名斷點(diǎn)省去很多手工跳過(guò)操作。
遠(yuǎn)程調(diào)試
假如你想調(diào)試遠(yuǎn)程Linux服務(wù)器上的MySQL上面的方法就不合適了,這時(shí)需要遠(yuǎn)程調(diào)試。lldb和gdb都支持遠(yuǎn)程調(diào)試,這里以lldb為例。
需要先在遠(yuǎn)程主機(jī)上安裝lldb,使用yum安裝,源地址在這里
remote$ yum install -y llvm-toolset-7
安裝完成后,啟動(dòng)lldb-server
remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform --listen?"*:9191"?--server
接下來(lái),在VS Code調(diào)試界面中新增配置項(xiàng)。
{
"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:?本機(jī)也要拷貝一份目標(biāo)程序,加載
pid:?填寫(xiě)遠(yuǎn)程主機(jī)的mysqld進(jìn)程id
sourceMap:?填寫(xiě)mysqld編譯的代碼路徑與本機(jī)代碼庫(kù)路徑的映射,這樣調(diào)試時(shí)代碼才可以和程序關(guān)聯(lián)在一起看
注意:記得調(diào)試前將代碼切換到與目標(biāo)程序版本一致的branch