萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Linux 從原始碼編譯安裝 MySQL 5.1 + Apache + PHP 完整步驟與遠程連線配置

環境準備

  • OS: Linux (CentOS/RHEL/Ubuntu 通用)
  • 源碼包放置:`/home/tmp/`
  • 安裝前缀:MySQL `/usr/local/mysql`、Apache `/usr/local/apache2`、PHP `/usr/local/php`

1. MySQL 5.1 編譯安裝

cd /home/tmp
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql

tar -zxvf mysql-5.1.33.tar.gz
cd mysql-5.1.33
./configure --prefix=/usr/local/mysql \
            --with-charset=utf8 --with-collation=utf8_general_ci \
            --with-extra-charsets=all \
            --with-plugins=innobase,myisam,partition \
            --enable-thread-safe-client
make && make install

# 後續配置
cd /usr/local/mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/my-medium.cnf /etc/my.cnf  # 選擇適合記憶體的模板
# 編輯 /etc/my.cnf [mysqld] 區段新增: user=mysql, default-character-set=utf8

/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data

# 啟動腳本與服務註冊
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
service mysqld start

# 設定 root 密碼與遠程授權
/usr/local/mysql/bin/mysql -u root
# 在 mysql> 提示符下:
USE mysql;
UPDATE user SET Password=PASSWORD('NewRootPass') WHERE User='root';
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost'; -- 允許遠程
FLUSH PRIVILEGES;

2. Apache 2.2 編譯安裝


cd /home/tmp
tar -zxvf httpd-2.2.13.tar.gz
cd httpd-2.2.13
./configure --prefix=/usr/local/apache2 \
            --enable-so --enable-rewrite --enable-ssl --enable-deflate \
            --with-mpm=prefork
make && make install

# 設定開機啟動
cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd
chmod 755 /etc/init.d/httpd
chkconfig --add httpd
chkconfig httpd on

3. PHP 5.3 編譯安裝 (支援 MySQL PDO)


cd /home/tmp
tar -zxvf php-5.3.0.tar.gz
cd php-5.3.0
./configure --prefix=/usr/local/php \
            --with-apxs2=/usr/local/apache2/bin/apxs \
            --with-mysql=/usr/local/mysql \
            --with-pdo-mysql=/usr/local/mysql \
            --with-mysqli=/usr/local/mysql/bin/mysql_config \
            --with-zlib --with-libxml-dir --with-xsl \
            --enable-mbstring --enable-zend-multibyte \
            --enable-sockets --enable-soap --enable-zip \
            --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir
make && make install

cp php.ini-production /usr/local/php/lib/php.ini
# 編輯 php.ini: date.timezone = Asia/Taipei, extension=pdo_mysql.so, mysqli.so

4. 整合 Apache + PHP


# 編輯 /usr/local/apache2/conf/httpd.conf
# 確認載入模組:
LoadModule php5_module modules/libphp5.so
# 新增:
AddType application/x-httpd-php .php .php5 .phtml
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html

# 重啟 Apache
/usr/local/apache2/bin/apachectl restart

5. MySQL 遠程連線完整配置 (兩層防護)

層級一:MySQL 賬號授權


mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
-- 建議建立專用應用帳號而非 root 遠程

層級二:網路綁定配置 (my.cnf)


# /etc/my.cnf 或 /usr/local/mysql/etc/my.cnf
[mysqld]
bind-address = 0.0.0.0  # 監聽所有介面,預設 127.0.0.1 僅本機
# skip-networking  # 確保此行被註解或刪除

修改後 `service mysqld restart`。

層級三:系統防火牆開放 3306


# iptables (CentOS 6/7)
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

# firewalld (CentOS 7+)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# ufw (Ubuntu)
ufw allow 3306/tcp

驗證連線


# 遠端機器測試
mysql -h ServerIP -u root -p
telnet ServerIP 3306

補充:Ubuntu 套件管理安裝快速版


sudo apt-get update
sudo apt-get install mysql-server apache2 php5 libapache2-mod-php5 php5-mysql
# 安裝過程會提示設定 root 密碼
# 遠程授權同上: GRANT ... @'%'; 修改 /etc/mysql/my.cnf bind-address=0.0.0.0; service mysql restart
copyright © 萬盛學電腦網 all rights reserved