proftpd サーバーを起動することにしたとき、MySQL に問題があります。問題は、MySql リクエストのシンボル「_」が原因で発生した構文エラー (1064) でした。
Proftpd バージョン:
ProFTPD バージョン 1.3.5
MySQL のバージョン:
mysql Ver 14.14 Distrib 5.5.43、readline 6.3 を使用する debian-linux-gnu (i686) 用)
リクエスト: ユーザーがログインするたびにログを記録します。
SQLLog PASS counter_login
SQLNamedQuery counter_login UPDATE "
last_login
=UNIX_TIMESTAMP(),login_count
=login_count
+1 WHEREusername
='%u'"users
sql.log のエラー:
2015-07-02 21:43:09,163 mod_sql/4.3[21872]: エラー: '1064'
2015-07-02 21:43:09,163 mod_sql/4.3[21872]: メッセージ: 'SQL 構文にエラーがあります; near '; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。SETlast_login
=UNIX_TIMESTAMP(),login_count
=login_count
WHERE `username' at line 1'
これと別の同じリクエストを # した場合、エラーは発生しません。
また、proftpd サーバーを表示する /etc/proftpd/sql.conf での認証の要求では、db でユーザーの情報を取得する必要があります。
SQLAuthenticate ユーザー グループ
テーブル「users」の名前を入力している間はすべて問題ありませんが、テーブルの名前が「users_ftp」の場合(もちろん、データベースと構成(/etc/proftpd/sql.conf)でテーブルの名前を変更します)proftpdを再起動するとサーバー、起動しません。
proftpd[21522]: 致命的: SQLAuthenticate: '/etc/proftpd/sql.conf' の 34 行目の不明な引数が失敗しました!