MySQL技術內幕1:內容介紹+MySQL編譯使用介紹

文章目錄

    • 1.整體內容介紹
    • 2.下載編譯流程
      • 2.1 安裝編譯工具和依賴庫
      • 2.2 下載編譯
    • 3.配置MySQL
      • 3.1 數據庫初始化
      • 3.2 編輯配置文件
      • 3.3 啟動停止MySQL
      • 3.4 登錄并修改密碼

1.整體內容介紹

MySQL技術系列文章將從MySQL下載編譯,使用到MySQL各組件使用原理+源碼分析,采用自底向上,從整體到局部的方式來進行詳細分析(從MySQL系統概述到存儲管理,再到索引,查詢編譯,事務,并發,安全,復制和分布式相關內容)。本篇為第一篇,也就是環境準備篇,以此環境為基礎來進行后續的介紹。

2.下載編譯流程

現在應用比較多的新版本是8.x.x,所以采用8.0.33版本來進行源碼的分析。

2.1 安裝編譯工具和依賴庫

sudo apt update
sudo apt install -y cmake gcc g++ make libncurses-dev libssl-dev libboost-all-dev libbz2-dev  pkg-config  libldap2-dev libsasl2-dev

2.2 下載編譯

cmake ..  \
-DCMAKE_INSTALL_PREFIX=/home/xxx/openSource/DataBase/mysql/install  \
-DMYSQL_DATADIR=/home/xxx/openSource/DataBase/mysql/data  \
-DWITH_BOOST=../boost \
-DSYSCONFDIR=/home/xxx/openSource/DataBase/mysql/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
-DWITH_READLINE=1  \
-DWITH_DEBUG=1   \
-DENABLED_LOCAL_INFILE=1 \ 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 
-DDEFAULT_CHARSET=utf8mb4  \
-DDEFAULT_COLLATION=utf8mb4_general_ci \ 
-DMYSQL_TCP_PORT=3306   \
-DWITH_SSL=system 參數詳解:
-DCMAKE_INSTALL_PREFIX      //安裝目錄
-DSYSCONFDIR                //配置文件目錄(默認可以不安裝配置文件)
-DMYSQL_DATADIR                   //數據存儲目錄
-DWITH_BOOST                          //boost目錄
-DINSTALL_MANDIR                 //幫助文檔 
-DMYSQL_TCP_PORT                //默認端口號
-DMYSQL_UNIX_ADDR             //sock文件位置
-DDEFAULT_CHARSET              //默認字符集。字符集的支持,可以調
-DEXTRA_CHARSETS                //擴展的字符集支持所有的
-DDEFAULT_COLLATION         //默認字符集為utf8;默認校對規則為utf8_general_ci
-DWITH_READLINE                   //上下翻歷史命令
-DWITH_SSL                              //ssl路徑,可以使用系統的system,也可以使用自己編譯的指定路徑下的
-DWITH_EMBEDDED_SERVER //編譯并啟用嵌入式MySQL服務器
-DENABLED_LOCAL_INFILE     //從本地導入數據
-DWITH_INNOBASE_STORAGE_ENGINE    //編譯InnoDB存儲引擎
-DWITH_ARCHIVE_STORAGE_ENGINE       //編譯ARCHIVE存儲引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE //編譯BLACKHOLE引擎
-DWITH_DEBUG                      //debug版本
#編譯安裝
make -j8 && make install

過程中可能出現的問題:
1)CMake Error at CMakeLists.txt:1374 (MESSAGE):Please install the patchelf(1) utility:直接注釋掉cmakefile中對應的檢查即可。
2)undefined reference to `EVP_aes_128_cfb1’:OpenSSL 庫版本不兼容或配置不正確。

# 下載 OpenSSL 源碼
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w# 配置并編譯
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
sudo make install# 更新庫路徑
echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig# 驗證安裝
/usr/local/openssl/bin/openssl version
#更新cmake參數,清理后編譯
-DWITH_SSL=/usr/local/openssl

3.配置MySQL

3.1 數據庫初始化

cd ~/openSource/DataBase/mysql/install   # 指定的安裝路徑
sudo bin/mysqld --initialize --user=xxx --basedir=/home/xxx/openSource/DataBase/mysql/install --datadir=/home/xxx/openSource/DataBase/mysql/data/

此時會生成臨時密碼,后面可以在日志中查找,也可以在這記錄一下。
在這里插入圖片描述

3.2 編輯配置文件

指定的配置文件路徑下去編輯:vim

/home/xxx/openSource/DataBase/mysql/etc/my.cnf
[mysqld]
basedir=/home/xxxx/openSource/DataBase/mysql/install
datadir=/home/xxxx/openSource/DataBase/mysql/data
socket=/tmp/mysql.sock
user=mysql[client]
socket=/tmp/mysql.sock

3.3 啟動停止MySQL

/home/xxx/openSource/DataBase/mysql/install/support-files/mysql.server start
/home/xxx/openSource/DataBase/mysql/install/support-files/mysql.server stop

3.4 登錄并修改密碼

./bin/mysql -u root -p

輸入臨時密碼后登錄成功
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘你的新密碼’;
在這里插入圖片描述
以上就完成了MySQL的編譯安裝和配置,可以使用其進行調試了。

原文鏈接

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908970.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908970.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 事務詳解

MySQL 事務詳解 一、事務是什么?為什么需要事務? 二、事務的四大特性(ACID)舉例說明:轉賬操作 三、MySQL 中事務的支持四、事務分類:隱式 vs 顯式1. 隱式事務(自動提交)2. 顯式事務&…

深入淺出Asp.Net Core MVC應用開發系列-AspNetCore中的日志記錄

ASP.NET Core 是一個跨平臺的開源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 應用。 ASP.NET Core 中的日志記錄 .NET 通過 ILogger API 支持高性能結構化日志記錄,以幫助監視應用程序行為和診斷問題。 可以通過配置不同的記錄提供程…

利用coze工作流制作一個自動生成PPT的智能體

在Coze平臺中,通過工作流實現PPT自動化生成是一個高效且靈活的解決方案,尤其適合需要快速產出標準化演示文稿的場景。以下是基于Coze工作流制作PPT的核心邏輯與操作建議: 理論流程 一、核心流程設計 需求輸入與解析 用戶輸入:主…

vue3 按鈕級別權限控制

在Vue 3中實現按鈕級別的權限控制,可以通過多種方式實現。這里我將介紹幾種常見的方法: 方法1:使用Vue 3的Composition API 在Vue 3中,你可以使用Composition API來創建一個可復用的邏輯來處理權限控制。 創建權限控制邏輯 首…

spa首屏加載慢怎樣解決

SPA(Single Page Application,單頁應用)首屏加載慢是一個常見問題,主要原因通常是首次加載需要拉取體積較大的 JavaScript 文件、樣式表、初始化數據等。以下是一些常見的 優化策略,可以幫助你 提升首屏加載速度&#…

UE5 音效系統

一.音效管理 音樂一般都是WAV,創建一個背景音樂類SoudClass,一個音效類SoundClass。所有的音樂都分為這兩個類。再創建一個總音樂類,將上述兩個作為它的子類。 接著我們創建一個音樂混合類SoundMix,將上述三個類翻入其中,通過它管理每個音樂…

2.Vue編寫一個app

1.src中重要的組成 1.1main.ts // 引入createApp用于創建應用 import { createApp } from "vue"; // 引用App根組件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要寫三種標簽 <template> <!--html--> </template>…

NTT印地賽車:數字孿生技術重構賽事體驗范式,驅動觀眾參與度革命

引言&#xff1a;數字孿生技術賦能體育賽事&#xff0c;開啟沉浸式觀賽新紀元 在傳統體育賽事觀賽模式遭遇體驗天花板之際&#xff0c;NTT與印地賽車系列賽&#xff08;NTT INDYCAR SERIES&#xff09;的深度合作&#xff0c;通過數字孿生&#xff08;Digital Twin&#xff09…

解構與重構:PLM 系統如何從管理工具進化為創新操作系統?

在智能汽車、工業物聯網等新興領域的沖擊下&#xff0c;傳統產品生命周期管理&#xff08;PLM&#xff09;系統正在經歷前所未有的范式轉換。當某頭部車企因 ECU 軟件與硬件模具版本失配導致 10 萬輛智能電車召回&#xff0c;損失高達 6 億美元時&#xff0c;這場危機不僅暴露了…

【Ubuntu 16.04 (Xenial)??】安裝docker及容器詳細教程

Ubuntu 16.04 安裝docker詳細教程 一、docker安裝1.1 前期準備1.2 使用 Docker 官方安裝腳本安裝&#xff08;推薦&#xff09; 查看ubuntu版本&#xff1a;lsb_release -a 這里我的系統是 ??Ubuntu 16.04 (Xenial)??&#xff0c;在 ??Ubuntu 16.04 (Xenial)?? 上安裝…

.Net框架,除了EF還有很多很多......

文章目錄 1. 引言2. Dapper2.1 概述與設計原理2.2 核心功能與代碼示例基本查詢多映射查詢存儲過程調用 2.3 性能優化原理2.4 適用場景 3. NHibernate3.1 概述與架構設計3.2 映射配置示例Fluent映射XML映射 3.3 查詢示例HQL查詢Criteria APILINQ提供程序 3.4 高級特性3.5 適用場…

MySQL:InnoDB架構(內存架構篇)

目錄 0.前置知識 0.1二級索引的概念 二級索引查詢原理 1.整體架構 1.1為什么innoDB的架構會分為兩個部分? 2.內存架構 2.1BufferPool 2.2ChangeBuffer 唯一性檢查不是實時性會出現的問題? ChangeBuffer的優勢 2.3Adaptive Hash Index 2.4LogBuffer 0.前置知識 0.…

鷹盾加密器“一機一碼”技術全維度剖析:從底層實現到生態防護體系

“一機一碼”加密技術的深度解析與實現路徑 引言 在數字內容版權保護和軟件授權管理領域&#xff0c;“一機一碼”技術作為一種重要的安全防護手段&#xff0c;能夠有效防止授權碼濫用和非法傳播。它通過建立設備與授權碼的唯一對應關系&#xff0c;確保每份授權僅在特定設備…

Android 中使用 OkHttp 創建多個 Client

在 Android 開發中&#xff0c;有時我們需要創建多個 OkHttpClient 實例來滿足不同的網絡請求需求。以下是創建和管理多個 OkHttpClient 的方法&#xff1a; 基本創建方式 // 創建默認的 OkHttpClient val defaultClient OkHttpClient()// 創建帶有自定義配置的 Client val …

C++中的跳轉語句

C中的跳轉語句包括break、continue和goto&#xff0c;它們用于改變程序的正常執行流程。下面分別介紹它們的作用、使用場景和注意事項&#xff1a; 1. break 作用&#xff1a; ? 立即終止當前所在的循環&#xff08;for、while、do while&#xff09;或switch語句&#xff…

AI在網絡安全領域的應用現狀和實踐

當前&#xff0c;人工智能技術已深度融入網絡安全產品&#xff0c;推動傳統防御模式向智能化、自適應方向加速演進。各安全廠商通過機器學習、深度學習與知識圖譜等技術的融合應用&#xff0c;提高安全產品在威脅檢測、攻擊溯源、風險評估等場景的能力躍遷&#xff0c;突破傳統…

線程同步:確保多線程程序的安全與高效!

全文目錄&#xff1a; 開篇語前序前言第一部分&#xff1a;線程同步的概念與問題1.1 線程同步的概念1.2 線程同步的問題1.3 線程同步的解決方案 第二部分&#xff1a;synchronized關鍵字的使用2.1 使用 synchronized修飾方法2.2 使用 synchronized修飾代碼塊 第三部分&#xff…

Spark 之 DataFrame 開發

foreachPartition val data = spark.sparkContext.parallelize(1 to 100)// 使用 foreachPartition 批量處理分區 data.foreachPartition {partitionIterator =

UDP:簡潔高效的報文結構解析與關鍵注意事項

UDP&#xff08;User Datagram Protocol&#xff09;以其無連接、低開銷的特性&#xff0c;成為實時應用&#xff08;如視頻、游戲、DNS&#xff09;的首選傳輸協議。深入理解其報文結構和注意事項&#xff0c;是高效利用UDP的基礎。 一、UDP報文結構&#xff1a;簡潔的四段式 …

Cursor 工具項目構建指南:讓 AI 審查 AI 生產的內容,確保生產的內容質量和提前發現問題

簡簡單單 Online zuozuo: 簡簡單單 Online zuozuo 簡簡單單 Online zuozuo 簡簡單單 Online zuozuo 簡簡單單 Online zuozuo :本心、輸入輸出、結果 簡簡單單 Online zuozuo : 文章目錄 Cursor 工具項目構建指南:讓 AI 審查 AI 生產的內容,確保生產的內容質量和提前發現問…