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

CentOS 6.5 搭建 LAMP + ProFTPD (MySQL 虛擬用戶) 與數據遷移實戰

     編輯:MySQL 綜合教學

CentOS 6.5 搭建 LAMP + ProFTPD (MySQL 虛擬用戶) 與數據遷移實戰

在最小化安裝的 CentOS 6.5 x64 上,從零部署 Apache + MySQL + PHP (LAMP) 並編譯安裝支援 MySQL 驗證的 ProFTPD,實現 FTP 虛擬用戶存儲於資料庫,最後完成舊服務器數據遷移全流程。

1. 安裝 MySQL

yum install -y mysql mysql-server mysql-devel
/etc/init.d/mysqld start
/usr/bin/mysql_secure_installation
chkconfig --levels 235 mysqld on

2. 安裝 Apache

yum install -y httpd
/etc/init.d/httpd start
# 若報 "Could not reliably determine the server's fully qualified domain name"
echo "ServerName localhost:80" >> /etc/httpd/conf/httpd.conf
chkconfig --levels 235 httpd on

3. 安裝 PHP 及常用擴展

yum install -y php php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
service httpd restart
# 驗證:echo '' > /var/www/html/info.php

4. 安裝第三方倉庫 (RPMForge) 以獲取編譯工具

wget https://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm
wget https://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt
rpm -ivh rpmforge-release-0.5.2-1.el6.rf.x86_64.rpm

5. 編譯安裝 ProFTPD (啟用 MySQL 模組)

yum install -y gcc make
# 確認 MySQL 開發頭文件與庫路徑
whereis mysql   # /usr/include/mysql, /usr/lib64/mysql

tar zxvf proftpd-1.3.5.tar.gz
cd proftpd-1.3.5
./configure --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
  --enable-nls \
  --with-includes=/usr/include/mysql \
  --with-libraries=/usr/lib64/mysql \
  --prefix=/usr/local/proftpd
make && make install

6. 配置 ProFTPD 連接 MySQL (虛擬用戶)

編輯 /usr/local/proftpd/etc/proftpd.conf 關鍵段:

SQLBackend mysql
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
SQLConnectInfo ftp@localhost proftpd your_password

SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLMinID 500
CreateHome on

# 登入計數與修改時間更新
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

RootLogin off
RequireValidShell off

# 禁止特定用戶刪除文件

  
    DenyUser rdd1,rdd2,rdd3,amd,fd,wsd,csd,std,asd,ftp
  

7. MySQL 建表結構 (ftp 資料庫)

CREATE DATABASE ftp DEFAULT CHARACTER SET utf8mb4;
USE ftp;

CREATE TABLE ftpgroup (
  groupname VARCHAR(16) NOT NULL,
  gid SMALLINT(6) NOT NULL DEFAULT 5500,
  members VARCHAR(16) NOT NULL,
  PRIMARY KEY (groupname)
) ENGINE=InnoDB;

CREATE TABLE ftpuser (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  userid VARCHAR(32) NOT NULL UNIQUE,
  passwd VARCHAR(32) NOT NULL,
  uid SMALLINT(6) NOT NULL DEFAULT 5500,
  gid SMALLINT(6) NOT NULL DEFAULT 2001,
  homedir VARCHAR(255) NOT NULL,
  shell VARCHAR(16) NOT NULL DEFAULT '/sbin/nologin',
  count INT NOT NULL DEFAULT 0,
  accessed DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  modified DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB;

8. 系統用戶/組與目錄權限

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
# 複製舊 FTP 目錄 (保留屬性)
scp -prv /home/ftp root@new_server:/home/
# 必要時修正權限
chown -R ftpuser:ftpgroup /home/ftp

9. 啟動 ProFTPD 並驗證

/usr/local/proftpd/sbin/proftpd
pgrep proftpd   # 有 PID 即啟動成功
proftpd -nd6    # 前台調試模式查看錯誤
proftpd -l      # 列出已編譯模組,確認 mod_sql_mysql 存在

10. MySQL 備份與恢復 (遷移核心)

# 備份全部庫 (含事件)
mysqldump -u root -p --events --ignore-table=mysql.events --all-databases > all.sql

# 恢復 (目標庫已建立並啟動)
mysql -u root -p < /home/all.sql
# 恢復後重啟 mysqld 生效

常用 mysqldump 變體

需求命令
單庫含數據mysqldump -u user -p dbname > db.sql
單庫僅結構mysqldump -u user -p -d dbname > db.sql
單表含數據mysqldump -u user -p dbname table > table.sql
單表僅結構mysqldump -u user -p -d dbname table > table.sql
恢復mysql -u user -p dbname < dump.sql
ProFTPD 必須編譯安裝以啟用 mod_sql_mysql;yum 直接安裝的版本通常不含 MySQL 模組。生產環境建議啟用 TLS (FTPS) 加密傳輸。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved