記錄 SUSE Linux Enterprise Desktop 10 環境下,從源碼包 mysql-5.0.87.tar.gz 純手動編譯安裝 MySQL 的完整踩坑實錄,涵蓋依賴包強制安裝、靜態編譯、配置文件選擇、環境變量設置、初始化與遠程授權。
wget https://mirrors.xxx/mysql-5.0.87.tar.gz
tar -xzf mysql-5.0.87.tar.gz
cd mysql-5.0.87
./configure --prefix=/usr/local/mysql \
--with-mysqld-user=mysql \
--with-unix-socket-path=/tmp/mysql.sock \
--with-mysqld-ldflags=-all-static # 靜態編譯,適合 chroot 環境
缺少 gcc/g++/ncurses-devel 等時,從鏡像源下載 RPM 包強制安裝:
sudo rpm -ivh gcc-4.1.2.rpm --force --nodeps
sudo rpm -ivh gcc-c++.rpm --force --nodeps
# 依次解決所有缺失依賴
make
sudo make install
ls /usr/local/mysql/share/mysql/my-*.cnf
# 選擇 my-medium.cnf 複製
sudo cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
sudo chown root:sys /etc/my.cnf
sudo chmod 644 /etc/my.cnf
sudo chmod 777 /usr/local/mysql/var -R # 或 chown mysql:mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
# /etc/profile (全局)
export PATH=/usr/local/mysql/bin:/usr/local/mysql/libexec:$PATH
# ~/.bashrc (用戶)
export PATH=/usr/local/mysql/bin:/usr/local/mysql/libexec:$PATH
# 重新登錄或 source 生效
mysqld_safe --user=mysql & # 後台啟動
mysqladmin -u root password '123456'
mysql -u root -p
UPDATE mysql.user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
--with-mysqld-ldflags=-all-static)省去 chroot 環境下部署動態庫的麻煩,但二進制體積增大。--force --nodeps)解決依賴地獄,但可能留下系統不一致隱患,生產環境首選源碼編譯依賴庫或使用發行版包管理器。--with-unix-socket-path=/tmp/mysql.sock 需與 my.cnf [client] socket 一致,避免客戶端連接失敗。yum install mysql-community-server,Ubuntu 用 apt install mysql-server,Docker 用 docker run mysql:8.0,極大簡化運維。源碼編譯雖繁瑣,但能深度理解 MySQL 構建依賴、靜態/動態鏈接、配置文件層級、權限模型等核心機制。