針對 Linux(CentOS/RedHat 等)手動編譯安裝 MySQL 5.0.45 的標準化流程,涵蓋系統用戶、編譯參數、配置檔、資料目錄初始化、權限設定、systemd/rc.local 啟動、常用指令與備份還原範本。
# 1. 建立系統用戶/組
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
# 2. 解壓原始碼
tar -zxvf mysql-5.0.45.tar.gz
cd mysql-5.0.45
# 3. 配置編譯參數
./configure \
--prefix=/usr/local/mysql \
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-extra-charsets=latin1 \
--enable-thread-safe-client \
--with-big-tables \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile
# 4. 編譯安裝(視 CPU 核心數加 -j 加速)
make -j$(nproc)
make install
# 5. 配置檔部署
cp support-files/my-medium.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 註釋掉 log-bin=mysql-bin(非主庫不需二進制日誌)
sed -i 's/^log-bin=mysql-bin/#log-bin=mysql-bin/' /etc/my.cnf
# 6. 初始化資料目錄
cd /usr/local/mysql
./bin/mysql_install_db --user=mysql
# 7. 目錄權限
chown -R root .
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
# 8. 啟動服務
./bin/mysqld_safe --user=mysql &
# 9. 設定開機自啟
echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.local
chmod +x /etc/rc.local
# 或 systemd 服務單元(現代發布版建議)
# 連線測試
/usr/local/mysql/bin/mysql -u root -p
# 初次無密碼直接 Enter
# 修改 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'NewStrongPass123!'
| 操作 | 指令範例 |
|---|---|
| 本地登入 | mysql -uroot -p |
| 遠程登入 | mysql -h 192.168.1.10 -uroot -p |
| 修改密碼 | mysqladmin -uroot -p'old' password 'new' |
| 建庫 | mysql -e "CREATE DATABASE mydb CHARACTER SET utf8mb4;" |
| 刪庫 | mysql -e "DROP DATABASE mydb;" |
| 列出資料庫 | mysql -e "SHOW DATABASES;" |
| 檢視表結構 | mysql -e "DESC mydb.mytable;" |
| 全庫備份 | mysqldump -uroot -p --all-databases > /backup/full_$(date +%F).sql |
| 單庫備份 | mysqldump -uroot -p mydb > /backup/mydb_$(date +%F).sql |
| 單表備份 | mysqldump -uroot -p mydb mytable > /backup/mytable_$(date +%F).sql |
| 還原單庫 | mysql -uroot -p mydb < /backup/mydb_2024-01-15.sql |
| 查看進程 | mysql -e "SHOW PROCESSLIST;" |
| 查看狀態 | mysql -e "SHOW GLOBAL STATUS;" |
| 關閉服務 | mysqladmin -uroot -p shutdown |
[mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysql.sock
user=mysql
default-storage-engine=InnoDB
innodb_buffer_pool_size=1G # 物理記憶體 60-70%
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
max_connections=500
thread_cache_size=50
table_open_cache=2000
tmp_table_size=64M
max_heap_table_size=64M
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=1
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci