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

Gentoo 安裝配置 Pure-FTPd 整合 MySQL 驗證完整實戰教學

     編輯:MySQL 綜合教學

環境與版本

  • 作業系統:Gentoo Linux
  • FTP 服務:Pure-FTPd
  • 資料庫:MySQL 5.5.28
  • 驗證方式:MySQL 使用者帳號驗證

第一階段:安裝 Pure-FTPd 與 MySQL 支援

# 啟用 MySQL USE flag
echo 'net-ftp/pure-ftpd mysql' >> /etc/portage/package.use

# 安裝 Pure-FTPd(會自動引入 MySQL 依賴)
emerge pure-ftpd

第二階段:MySQL 初始化與 Root 密碼設定

# 互動式配置 MySQL(設定 root 密碼、初始化資料目錄)
ebuild /var/db/pkg/dev-db/mysql-5.5.28/mysql-5.5.28.ebuild config

# 設定 root 密碼為 root(生產環境請使用強密碼)

第三階段:優化 MySQL 客戶端連線設定

編輯 /etc/mysql/my.cnf,新增 [client] 區段方便管理:

[client]
user = root
password = root
host = 127.0.0.1
port = 3306
socket = /var/run/mysqld/mysqld.sock

[mysqld]
server-id = 220
skip-name-resolve
/etc/init.d/mysql start

第四階段:建立 Pure-FTPd 專用資料庫與資料表

mysql -A  # 使用上方 my.cnf 設定自動登入

CREATE DATABASE IF NOT EXISTS pureftpd;
USE pureftpd;

CREATE TABLE IF NOT EXISTS `ftpd` (
  `User` varchar(16) NOT NULL DEFAULT '' COMMENT '用戶名',
  `status` enum('0','1') NOT NULL DEFAULT '0' COMMENT '可用狀態:0-不可用;1-正在使用',
  `Password` varchar(64) NOT NULL DEFAULT '' COMMENT '密碼',
  `Uid` varchar(11) NOT NULL DEFAULT '-1' COMMENT '用戶ID',
  `Gid` varchar(11) NOT NULL DEFAULT '-1' COMMENT '組ID',
  `Dir` varchar(128) NOT NULL DEFAULT '' COMMENT '擁有的權限路徑',
  `ULBandwidth` smallint(5) NOT NULL DEFAULT '0' COMMENT '上傳帶寬',
  `DLBandwidth` smallint(5) NOT NULL DEFAULT '0' COMMENT '下載帶寬',
  `comment` tinytext NOT NULL COMMENT '備註',
  `ipaccess` varchar(15) NOT NULL DEFAULT '*' COMMENT 'IP地址',
  `QuotaSize` smallint(5) NOT NULL DEFAULT '0' COMMENT '大小配額',
  `QuotaFiles` int(11) NOT NULL DEFAULT '0' COMMENT '文件類型配額',
  PRIMARY KEY (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='ftp用戶名密碼表';

第五階段:建立 Pure-FTPd 專用資料庫帳號

GRANT SELECT ON pureftpd.* TO 'ftpduser'@'%' IDENTIFIED BY 'ftpdpassword';
FLUSH PRIVILEGES;

第六階段:插入測試帳號

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)
VALUES ('testuser', '1', MD5('testpassword'), '1002', '81', '/var/www', 0, 0, '備註', '*', 0, 0);

第七階段:配置 Pure-FTPd 使用 MySQL 驗證

1. 主配置檔 /etc/conf.d/pure-ftpd

IS_CONFIGURED="yes"
SERVER="-S 10.36.32.220,21"
MAX_CONN="-c 50"
MAX_CONN_IP="-C 20"
AUTH="-l mysql:/etc/pureftpd-mysql.conf"
MISC_OTHER="-A -H -x -j -R -Z -E -p 50001:59999 -O clf:/var/log/pureftpd/pureftpd.log"

mkdir -p /var/log/pureftpd/

2. MySQL 驗證配置檔 /etc/pureftpd-mysql.conf

MYSQLServer     127.0.0.1
MYSQLPort       3306
MYSQLUser       ftpduser
MYSQLPassword   ftpdpassword
MYSQLDatabase   pureftpd
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

關鍵說明:MYSQLCrypt md5 指定密碼加密方式為 MD5,需與資料表存儲方式一致。\L 代表登入用戶名,\R 代表客戶端 IP。

第八階段:建立系統用戶與目錄權限

groupadd apache
useradd nfsuser -u 1002 -g apache -d /dev/null -s /sbin/nologin
mkdir -p /var/www
chown -R nfsuser:apache /var/www

第九階段:啟動服務與測試

/etc/init.d/pure-ftpd start

使用 FTP 客戶端(FileZilla、WinSCP 等)以 testuser / testpassword 登入測試。

常見問題排查

現象可能原因解決方向
連線被拒絕防火牆阻擋 21 埠或被動模式埠範圍開放 21 與 50001-59999 埠
驗證失敗MySQL 連線參數錯誤、密碼加密方式不符檢查 pureftpd-mysql.conf 設定
無法切換目錄系統用戶 UID/GID 與資料表設定不符確認 Uid/Gid 欄位正確
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved