最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL的編譯安裝實戰(zhàn)指南

 更新時間:2026年03月05日 08:55:24   作者:愛喝可樂的北極熊  
文章介紹了在Linux系統(tǒng)上源碼編譯安裝MySQL 8.0的詳細步驟,包括硬件要求、系統(tǒng)環(huán)境準備、下載源碼包、配置CMake、編譯與安裝、初始化與配置、登錄與安全加固等,本文介紹MySQL 8.0源碼編譯安裝完整實戰(zhàn)指南,感興趣的朋友一起看看吧

在 Linux(以 CentOS 7/Stream 8/9 為例)上源碼編譯安裝 MySQL 8.0是一個相對復(fù)雜的過程,因為它需要大量的依賴庫、較高的內(nèi)存(建議 4GB 以上,否則編譯可能失敗)以及較新的 CMake 版本。

以下是基于最新環(huán)境整理的MySQL 8.0 源碼編譯安裝完整實戰(zhàn)指南

?? 編譯前重要提示

  • 硬件要求:編譯過程非常消耗內(nèi)存和 CPU。建議至少 2核 CPU 和 4GB 內(nèi)存。如果內(nèi)存只有 2GB,必須增加 Swap 分區(qū),否則 make 過程中會被系統(tǒng)殺掉(OOM)。
  • 時間成本:編譯過程可能需要 30 分鐘到 2 小時,取決于機器性能。
  • Boost 庫:MySQL 8.0 強依賴 Boost 庫,且對版本要求嚴格。通常推薦下載包含 Boost 的源碼包(文件名帶 boost)。

第一步:系統(tǒng)環(huán)境準備

1. 卸載沖突軟件

確保系統(tǒng)中沒有安裝 MariaDB 或舊版 MySQL。

# 停止服務(wù)
systemctl stop mariadb
systemctl disable mariadb
# 卸載
yum remove -y mariadb-libs mariadb mysql mysql-libs
rm -rf /etc/my.cnf /etc/mysql

2. 安裝編譯依賴工具

MySQL 8.0 編譯需要 gccgcc-c++cmakencursesbisonopenssl 等開發(fā)包。

yum install -y gcc gcc-c++ cmake make ncurses-devel bison openssl-devel openssl libaio-devel libtirpc-devel rpcgen libxcrypt-devel perl wget tar vim

3. 升級 CMake (關(guān)鍵步驟)

CentOS 7 自帶的 CMake 版本通常過低(2.8.x),而 MySQL 8.0 需要 CMake 3.5+(建議 3.16+)。
如果 cmake --version 顯示版本低于 3.5,請執(zhí)行以下操作升級:

# 下載較新版本的 cmake (例如 3.24.2)
cd /usr/local/src
wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-x86_64.tar.gz
# 或者編譯安裝源碼版 cmake (如果上面的二進制包不可用)
# wget https://cmake.org/files/v3.24/cmake-3.24.2.tar.gz
# 解壓二進制包直接可用
tar -zxvf cmake-3.24.2-linux-x86_64.tar.gz
mv cmake-3.24.2-linux-x86_64 cmake-3.24.2
ln -s /usr/local/src/cmake-3.24.2/bin/cmake /usr/bin/cmake
ln -s /usr/local/src/cmake-3.24.2/bin/ccmake /usr/bin/ccmake
# 驗證版本
cmake --version 
# 應(yīng)顯示 3.24.2 或更高

4. 創(chuàng)建用戶和目錄

# 創(chuàng)建 mysql 用戶和組
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 創(chuàng)建安裝目錄和數(shù)據(jù)目錄
mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql

第二步:下載源碼包

強烈建議下載帶有 Boost 的源碼包(文件名包含 boost),這樣可以避免手動下載匹配版本的 Boost 庫的麻煩。

前往官網(wǎng)或使用 wget 下載(版本號可根據(jù)需要調(diào)整,這里以 8.0.36 為例):

cd /usr/local/src
# 下載帶 boost 的源碼包 (約 200MB+)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.36.tar.gz
# 解壓
tar -zxvf mysql-boost-8.0.36.tar.gz
cd mysql-8.0.36

第三步:配置 CMake (核心步驟)

創(chuàng)建一個 build 目錄進行編譯(推薦 out-of-source 編譯),然后運行 cmake 配置。

mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=../boost/boost_1_81_0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=0

參數(shù)解釋:

  • -DCMAKE_INSTALL_PREFIX: 安裝路徑。
  • -DMYSQL_DATADIR: 數(shù)據(jù)文件存放路徑。
  • -DWITH_BOOST: 指定 Boost 庫的路徑(解壓后的源碼包內(nèi)自帶,路徑需對應(yīng)實際文件夾名,如 boost_1_81_0)。
  • -DDEFAULT_CHARSET: 默認字符集,推薦 utf8mb4。
  • -DWITH_SSL=system: 使用系統(tǒng)安裝的 OpenSSL。

注意:如果 cmake 報錯,請仔細閱讀錯誤信息,通常是缺少某個開發(fā)包(如 rpcgen 或 libtirpc),安裝后重新運行 cmake 命令即可。

第四步:編譯與安裝

這一步最耗時。建議使用 make -j 開啟多線程編譯(nproc 查看 CPU 核數(shù))。

# 編譯 (根據(jù) CPU 核數(shù)調(diào)整 -j 后面的數(shù)字,例如 4 核就用 -j 4)
make -j $(nproc)
# 安裝
make install

如果在 make 過程中卡死或報錯 Killed,說明內(nèi)存不足,請立即增加 Swap 分區(qū)。

第五步:初始化與配置

1. 環(huán)境變量配置

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

2. 編寫配置文件 /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
pid-file = /data/mysql/mysqld.pid
user = mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-name-resolve
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /tmp/mysql.sock
default-character-set = utf8mb4

3. 初始化數(shù)據(jù)庫

MySQL 8.0 推薦使用 --initialize-insecure 生成空密碼,方便首次登錄,或者使用 --initialize 生成隨機密碼。

# 確保數(shù)據(jù)目錄權(quán)限正確
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
# 初始化 (不安全模式,root 無密碼)
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
# 如果要用安全模式(生成臨時密碼),請看日志末尾
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

4. 啟動服務(wù)

編譯安裝不會自動注冊 systemd 服務(wù),需要手動復(fù)制腳本或創(chuàng)建 service 文件。

方法 A:使用官方提供的啟動腳本(簡單)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 啟動
/etc/init.d/mysqld start
# 設(shè)置開機自啟
chkconfig --add mysqld
chkconfig mysqld on

方法 B:使用 Systemd (推薦 CentOS 7+)創(chuàng)建 /etc/systemd/system/mysqld.service:

[Unit]
Description=MySQL Server
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target

然后執(zhí)行:

systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld

第六步:登錄與安全加固

登錄數(shù)據(jù)庫

如果是 --initialize-insecure

mysql -u root

如果是 --initialize

grep 'temporary password' /data/mysql/error.log
mysql -u root -p
# 輸入上面查到的臨時密碼

修改密碼與配置首次登錄后(特別是安全初始化),必須修改密碼:

-- 修改 root 密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
-- 允許遠程連接 (可選)
CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 退出
EXIT;

驗證安裝

mysql -V
# 輸出應(yīng)包含 "Ver 8.0.xx"
netstat -tlnp | grep 3306
# 確認端口監(jiān)聽

常見問題排查

  • 內(nèi)存不足 (OOM): 編譯時進程被殺。
    • 解決: dd if=/dev/zero of=/swapfile bs=1M count=4096 && mkswap /swapfile && swapon /swapfile (增加 4G Swap)。
  • Boost 版本不匹配: CMake 報錯 Boost 版本不對。
    • 解決: 務(wù)必下載帶 boost 的源碼包,并且 -DWITH_BOOST 路徑要指向解壓出來的具體 boost 文件夾(如 boost_1_81_0)。
  • SSL 錯誤: 編譯找不到 SSL。
    • 解決: 確保安裝了 openssl-devel,并在 CMake 中使用 -DWITH_SSL=system。

按照以上步驟,您就可以成功從源碼編譯并安裝一個定制的 MySQL 8.0 數(shù)據(jù)庫了。

到此這篇關(guān)于MySQL的編譯安裝實戰(zhàn)指南的文章就介紹到這了,更多相關(guān)mysql編譯安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL實現(xiàn)類似Oracle序列的方案

    MySQL實現(xiàn)類似Oracle序列的方案

    今天小編就為大家分享一篇關(guān)于MySQL實現(xiàn)類似Oracle序列的方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL基于java實現(xiàn)備份表操作

    MySQL基于java實現(xiàn)備份表操作

    這篇文章主要介紹了MySQL基于java實現(xiàn)備份表操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • MYSQL每隔10分鐘進行分組統(tǒng)計的實現(xiàn)方法

    MYSQL每隔10分鐘進行分組統(tǒng)計的實現(xiàn)方法

    這篇文章主要給大家介紹了如何利用MYSQL實現(xiàn)每隔10分鐘進行分組統(tǒng)計的方法,文中給出了詳細的示例代碼,相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2016-12-12
  • mysql 發(fā)生系統(tǒng)錯誤1067的解決方法

    mysql 發(fā)生系統(tǒng)錯誤1067的解決方法

    今天要把WEB項目打包成EXE,可是在數(shù)據(jù)庫上卡住了。在啟動數(shù)據(jù)庫服務(wù)的時候發(fā)生系統(tǒng)錯誤 1067。
    2009-09-09
  • mysql日志系統(tǒng)的簡單使用教程

    mysql日志系統(tǒng)的簡單使用教程

    這篇文章主要給大家介紹了關(guān)于mysql日志系統(tǒng)的簡單使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL條件更新的四大技巧與避坑指南

    MySQL條件更新的四大技巧與避坑指南

    UPDATE是數(shù)據(jù)更新的基石操作,但據(jù)統(tǒng)計35%的生產(chǎn)事故源于錯誤的條件更新,本文從基礎(chǔ)語法到高階優(yōu)化,詳解如何安全高效地實現(xiàn)條件更新,并附贈企業(yè)級應(yīng)用模板,需要的朋友可以參考下
    2025-06-06
  • Mysql數(shù)據(jù)庫實現(xiàn)多字段過濾的方法

    Mysql數(shù)據(jù)庫實現(xiàn)多字段過濾的方法

    這篇文章主要介紹了Mysql數(shù)據(jù)庫實現(xiàn)多字段過濾的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • MySQL Order By索引優(yōu)化方法

    MySQL Order By索引優(yōu)化方法

    在一些情況下,MySQL可以直接使用索引來滿足一個 ORDER BY 或 GROUP BY 子句而無需做額外的排序
    2012-07-07
  • Mybatis mapper動態(tài)代理的原理解析

    Mybatis mapper動態(tài)代理的原理解析

    這篇文章主要介紹了Mybatis mapper動態(tài)代理的原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • mysql安裝報錯unknown?variable?‘mysqlx_port=0.0‘簡單解決過程

    mysql安裝報錯unknown?variable?‘mysqlx_port=0.0‘簡單解決過程

    這篇文章主要給大家介紹了關(guān)于mysql安裝報錯unknown?variable?‘mysqlx_port=0.0‘的解決過程,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-08-08

最新評論

平南县| 宁强县| 古蔺县| 化州市| 白朗县| 庆安县| 长岭县| 武川县| 伊金霍洛旗| 平潭县| 康平县| 大庆市| 陈巴尔虎旗| 布拖县| 石门县| 凌云县| 浦江县| 格尔木市| 徐水县| 青龙| 尼勒克县| 绥芬河市| 花莲县| 同德县| 贡觉县| 阜南县| 永善县| 晋城| 开阳县| 岳西县| 兰州市| 兴仁县| 新巴尔虎右旗| 洛南县| 武邑县| 当涂县| 西林县| 南郑县| 和静县| 辰溪县| 普定县|