HowTo: служба FTP с использованием базы данных MySQL

Несмотря на некоторую неопределенность, которая может окружать MySQL, лично я все же предпочитаю работать с этой БД, а не с какой-то другой. Я ничего не имею против Postgre, я просто всю жизнь использовал MySQL, и до сих пор у меня не было причин пересматривать его использование.

На этот раз я научу вас, как установить FTP-сервер, но не только это, я научу вас не таким сложным способом, как сделать так, чтобы пользователи, пароли и другие пользовательские данные хранились в базе данных MySQL, а не в учетных записях. местный.

Почему это так?

Просто, потому что при создании резервной копии, переустановке сервера или любых других значительных изменениях перемещение службы будет таким же простым, как копирование файла конфигурации и экспорт базы данных MySQL на FTP.

Для этого мы будем использовать Pure-FTPd, ну… начнем 

Установка службы FTP с Pure-FTPd

1. Первое, что нужно сделать, это установить пакет: чистый ftpd-mysql

В таких дистрибутивах, как Debian или производные: aptitude установить чистый ftpd-mysql

2. После установки мы запустили службу, но должны ее остановить, чтобы остановить ее в таких системах, как Debian или производных, достаточно:

/etc/init.d/pure-ftpd-mysql stop

Однако я оставляю вам строку, которая остановит службу независимо от того, какой дистрибутив вы используете:

ps ax | grep pure | grep -v grep | awk '{print $1}' | xargs kill

Если вы хотите подробно разобраться в этой строке, прочтите Эта статья

Подготовка условий на сервере MySQL

Не так давно я уже объяснял, как создать базу данных, пользователя и дать этому пользователю права в базе данных: Пользователи и разрешения в MySQL

Перейдем к тому, что мы здесь будем делать? ...

1. Да, мы создадим базу данных, но сначала мы обратимся к MySQL:

mysql -u root -p

Здесь они вводят пароль root, и они получают доступ к терминалу MySQL.

2. Оказавшись внутри MySQL, мы переходим к созданию базы данных myftpdb:

CREATE DATABASE myftpdb;

Обратите внимание на точку с запятой «;»В конце строки.

3. Теперь создадим пользователя мойфтпусер и мы дадим разрешения на использование пользователя в базе данных, которую мы только что создали, этот пользователь будет иметь пароль мой фтппароль:

CREATE USER 'myftpuser'@'localhost' IDENTIFIED BY 'myftppassword';
GRANT ALL PRIVILEGES ON myftpdb.* TO 'myftpuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES ;

4. Готово, мы создали базу данных, пользователя и установили права доступа. Теперь мы должны импортировать базу данных по умолчанию (или чистую), чтобы это было завершено. Для этого сначала выйдем из MySQL:

exit;

Теперь давайте загрузим базу данных по умолчанию, которую я вам предлагаю:

Скачать БД по умолчанию

Или на сервере используйте следующую строку:

wget http://ftp.desdelinux.net/myftpdb.sql

Готово, он у нас уже есть на нашем сервере, осталось только импортировать ваши данные:

mysql -u root -p myftpdb < myftpdb.sql

И готово!

Они также могут использовать некоторые веб-приложения, например Администратор o PHPMyAdmin для импорта базы данных оставляю на вкус.

5. И все это для того, чтобы условия нашего MySQL были готовы.

Связывание FTP с MySQL

Что ж, у нас уже установлена ​​служба FTP, установлена ​​служба MySQL и установлена ​​наша база данных ... теперь нам просто нужно, присоединиться к службе FTP с MySQL.

1. Сначала мы должны загрузить файл конфигурации, который мы будем использовать для вышеупомянутого. В серверном терминале поместим следующую строку:

cd /etc/pure-ftpd/ && wget http://ftp.desdelinux.net/pure-ftpd-mysql.conf

2. Теперь мы запускаем службу FTP, сообщающую ей использовать для аутентификации пользователей MySQL, а также укажем, какой файл конфигурации использовать для подключения к MySQL:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

И всё 

Этого достаточно, чтобы установить собственный FTP-сервер с аутентификацией по базе данных MySQL.

Если вы хотите, чтобы всякий раз, когда сервер запускался автоматически, он запускал службу FTP, вы должны поместить в файл /etc/rc.local строка, которую мы используем для выполнения FTP, то есть вставляем /etc/rc.local это:

pure-ftpd-mysql -l mysql:/etc/pure-ftpd/pure-ftpd-mysql.conf

Кстати, вы можете получить доступ к FTP с помощью любого браузера, а также FTP-клиентов, таких как Filezilla... и не только это, используя файловые браузеры, такие как Nautilus, Dolphin или PCManFM, вы также можете скачивать файлы и загружать их 

Тестовый пользователь, который находится в базе данных

Имя пользователя: TestUser

Пароль: тестовый пароль

Как управлять пользователями FTP?

Что ж, учитывая, что это база данных MySQL, как я сказал выше ... использования PHPMyAdmin или Adminer будет достаточно. Просто используйте ваше любимое приложение для управления базой данных, которая содержит одну таблицу: пользователей … И в нем пользователи, вот скриншот:

Если вы хотите создать нового пользователя, вы можете продублировать или клонировать существующую строку и изменить данные, которые будут разными для обоих пользователей, здесь я покажу вам снимок экрана:

Ну… добавить больше нечего 

Я надеюсь, что это будет полезно для вас, и вы знаете, что любые вопросы или предложения дайте мне знать.

привет

PD: В этом уроке мы используем пароли, сохраненные в базе данных в виде обычного текста. Если вы хотите большей безопасности, я рекомендую попробовать md5 