首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Ubuntu 編譯安裝 MySQL 5.0 完整實戰:依賴包、配置參數、權限設置一站式指南

     編輯:MySQL 資料庫相關知識

在 Ubuntu 上從源碼編譯安裝 MySQL 5.0.40,記錄完整依賴解決、配置優化、權限落地流程,可作為無包管理器環境、自定義構建的參考範本。

系統依賴安裝

# 更新源並安裝編譯工具鏈
sudo apt-get update
sudo apt-get install build-essential g++ gcc make automake perl

# MySQL 編譯依賴的庫
sudo apt-get install libncurses5-dev libkdev4-dev libkde4c2a
# 注:現代 Ubuntu 套件名可能為 libncurses5-dev libkf5dev-dev 等,請按 apt-cache search 結果調整

用戶與目錄準備

sudo groupadd mysql
sudo useradd -g mysql -s /bin/bash -d /usr/local/mysql mysql

# 安裝前綴目錄
sudo mkdir -p /usr/local/mysql
sudo chown -R mysql:mysql /usr/local/mysql

源碼編譯安裝

cd /usr/local/src
tar zxvf mysql-5.0.40.tar.gz
cd mysql-5.0.40

./configure --prefix=/usr/local/mysql \
            --with-charset=utf8 \
            --with-extra-charsets=all \
            --enable-thread-safe-client \
            --enable-local-infile \
            --with-big-tables \
            --with-readline \
            --with-ssl \
            --with-embedded-server \
            --enable-assembler \
            --with-mysqld-ldflags=-all-static \
            --with-client-ldflags=-all-static

make -j$(nproc)
sudo make install

後續配置與權限

# 拷貝配置模板
sudo cp support-files/my-medium.cnf /etc/my.cnf

# 目錄歸屬
cd /usr/local/mysql
sudo chown -R mysql:mysql .
sudo chown -R root .
sudo chown -R mysql var

# 初始化系統表
sudo -u mysql bin/mysql_install_db --user=mysql

# 啟動服務
sudo -u mysql bin/mysqld_safe --user=mysql &

my.cnf 關鍵優化配置 (生產建議)

[mysqld]
# 基礎
datadir = /usr/local/mysql/var
socket = /tmp/mysql.sock
port = 3306
user = mysql
skip-name-resolve
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# 字符集
character-set-server = utf8
collation-server = utf8_general_ci

# InnoDB 核心 (根據內存調整)
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1

# 連接層
max_connections = 500
table_open_cache = 2000
thread_cache_size = 32

# 慢查詢
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/var/slow.log
long_query_time = 2

驗證與安全初始化

# 連接測試
/usr/local/mysql/bin/mysql -u root -p -e "STATUS; SHOW VARIABLES LIKE '%char%';"

# 設置 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'strong-password'

# 安全腳本 (MySQL 5.0 內建)
/usr/local/mysql/bin/mysql_secure_installation

systemd 服務註冊 (Ubuntu 16.04+)

cat > /etc/systemd/system/mysql.service <<'EOF'
[Unit]
Description=MySQL Community Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin -u root -p shutdown
TimeoutSec=600
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mysql
systemctl start mysql

避坑提示

  • libncurses 版本不匹配:編譯報 curses.h not found → 安裝 libncurses5-dev 或創建軟鏈接 ln -s /usr/include/ncurses.h /usr/include/curses.h。
  • KDE 庫非必需:libkde* 僅用於已棄用的 mysql-gui-tools,**可跳過**安裝,減少依賴。
  • 靜態鏈接風險:--with-mysqld-ldflags=-all-static 可能導致無法加載 UDF/插件,**生產建議移除**,改用動態鏈接。
  • AppArmor/SELinux:若 datadir 非默認路徑,需配置安全策略允許 mysqld 讀寫。

編譯安裝雖靈活,但**維護成本高**(安全補丁需自行回港構建)。**無特殊定制需求,強烈建議使用官方 APT/RPM 源二進制包**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved