首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Ubuntu 下 MySQL 源碼編譯安裝完整教程

     編輯:MySQL 綜合教學

前置依賴安裝


sudo apt-get update
sudo apt-get install -y \
  build-essential \
  cmake \
  libncurses5-dev \
  libssl-dev \
  bison \
  pkg-config \
  libaio-dev \
  libmecab-dev \
  liblz4-dev \
  libzstd-dev

建立用戶與目錄


sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

sudo mkdir -p /usr/local/mysql/{data,logs,tmp}
sudo chown -R mysql:mysql /usr/local/mysql

下載、編譯、安裝


cd /usr/src
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36.tar.gz
tar -xzf mysql-8.0.36.tar.gz
cd mysql-8.0.36

cmake . \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/usr/local/mysql/data \
  -DWITH_INNODB_STORAGE_ENGINE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DENABLED_LOCAL_INFILE=1 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
  -DWITH_DEBUG=0

make -j$(nproc)
sudo make install

初始化與配置


cd /usr/local/mysql

# 初始化數據目錄(8.0 產生隨機 root 密碼)
sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 或不安全初始化(無密碼,僅測試用)
# sudo bin/mysqld --initialize-insecure --user=mysql ...

# 配置文件
sudo cp support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 填入 basedir、datadir、port、server-id 等

# 目錄權限
sudo chown -R root:mysql /usr/local/mysql
sudo chown -R mysql:mysql /usr/local/mysql/data

# 系統服務
sudo cp support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld
sudo update-rc.d mysqld defaults

# 環境變數
echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

啟動與驗證


sudo service mysqld start

# 查看隨機密碼(若用 --initialize)
sudo grep 'temporary password' /usr/local/mysql/data/*.err

# 登入修改密碼
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';

systemd 服務管理(Ubuntu 16.04+ 推薦)


sudo tee /etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL 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 shutdown
TimeoutSec=300
LimitNOFILE=65535
LimitNPROC=65535

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable mysqld
sudo systemctl start mysqld

常見編譯錯誤對策

錯誤原因解決
Curses library not found缺 libncurses5-devapt-get install libncurses5-dev
OpenSSL not found缺 libssl-devapt-get install libssl-dev
Bison not found缺 bisonapt-get install bison
make 失敗記憶體不足增加 swap 或減少並行度 `make -j2`

為何生產環境不建議源碼編譯

  • 升級/打補丁需重新編譯,運維成本極高
  • 官方二進制包經過充分測試,穩定性更有保障
  • 安全漏洞修復響應滯後
  • 除非有極致定制需求(如特殊指令集優化、裁剪模組),否則優先選二進制包
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved