HowTo: บริการ FTP โดยใช้ฐานข้อมูล MySQL

แม้จะมีความไม่แน่นอนบางอย่างที่อาจเกิดขึ้นกับ MySQL แต่โดยส่วนตัวแล้วฉันยังชอบทำงานกับ DB นี้เพื่อใช้งานอื่น ฉันไม่มีอะไรต่อต้าน Postgre ฉันใช้ MySQL มาตลอดชีวิตและจนถึงตอนนี้ฉันก็ไม่มีเหตุผลที่จะคิดใหม่ในการใช้งาน

คราวนี้ฉันจะสอนวิธีติดตั้งเซิร์ฟเวอร์ FTP แต่ไม่เพียงแค่นั้นฉันจะสอนคุณด้วยวิธีที่ไม่ซับซ้อนวิธีทำให้ผู้ใช้รหัสผ่านและข้อมูลผู้ใช้อื่น ๆ ถูกเก็บไว้ในฐานข้อมูล MySQL ไม่ใช่ในบัญชี ท้องถิ่น

ทำไมทำแบบนี้

ง่ายเพราะเมื่อทำการสำรองข้อมูลติดตั้งเซิร์ฟเวอร์ใหม่หรือการเปลี่ยนแปลงที่สำคัญอื่น ๆ การย้ายบริการจะทำได้ง่ายเพียงแค่คัดลอกไฟล์กำหนดค่าและส่งออกฐานข้อมูล MySQL ไปยัง FTP

เพื่อให้บรรลุสิ่งนี้เราจะใช้ FTPd บริสุทธิ์, เอาล่ะ ... มาเริ่มกันเลย🙂

การติดตั้งบริการ FTP ด้วย Pure-FTPd

1. สิ่งแรกที่ต้องทำคือติดตั้งแพ็คเกจ: ftpd-mysql บริสุทธิ์

ใน distros เช่น debian หรืออนุพันธ์: ความถนัดติดตั้ง pure-ftpd-mysql

2. เมื่อติดตั้งแล้วเราจะเริ่มบริการ แต่เราต้องหยุดเพื่อหยุดมันในระบบเช่น Debian หรืออนุพันธ์ก็เพียงพอที่จะ:

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

อย่างไรก็ตามฉันปล่อยให้คุณมีสายที่จะหยุดบริการไม่ว่าคุณจะใช้ Distro:

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

หากคุณต้องการเข้าใจรายละเอียดเกี่ยวกับบรรทัดนี้โปรดอ่าน บทความนี้

การเตรียมเงื่อนไขบนเซิร์ฟเวอร์ MySQL

ฉันได้อธิบายไปแล้วเมื่อไม่นานมานี้ว่าจะสร้างฐานข้อมูลผู้ใช้และให้สิทธิ์ผู้ใช้ในฐานข้อมูลได้อย่างไร: ผู้ใช้และสิทธิ์ใน MySQL

มาดูกันว่าเราจะทำอะไรที่นี่? ...

1. เราจะสร้างฐานข้อมูลใช่ แต่ก่อนอื่นเราเข้าถึง MySQL:

mysql -u root -p

ที่นี่พวกเขาใส่รหัสผ่านรูทและพวกเขาจะเข้าถึงเทอร์มินัล MySQL

2. เมื่ออยู่ใน MySQL เราจะสร้างฐานข้อมูลต่อไป myftpdb:

CREATE DATABASE myftpdb;

สังเกตเครื่องหมายอัฒภาค«;»ท้ายบรรทัด

3. ตอนนี้เราจะสร้างผู้ใช้ myftpuser และเราจะให้สิทธิ์ในการใช้ผู้ใช้บนฐานข้อมูลที่เราเพิ่งสร้างขึ้นผู้ใช้รายนี้จะมีเป็นรหัสผ่าน รหัสผ่าน myftp:

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

4. พร้อมแล้วเราได้สร้างฐานข้อมูลผู้ใช้และกำหนดสิทธิ์ ตอนนี้เราต้องนำเข้าฐานข้อมูลเริ่มต้น (หรือสะอาด) เพื่อให้เสร็จสมบูรณ์ ในการดำเนินการนี้ให้ออกจาก MySQL ก่อน:

exit;

ตอนนี้มาดาวน์โหลดฐานข้อมูลเริ่มต้นที่ฉันเสนอให้คุณ:

ดาวน์โหลด DB ตามค่าเริ่มต้น

หรือบนเซิร์ฟเวอร์ใช้บรรทัดต่อไปนี้:

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

และ voila 😀

เท่านี้ก็เพียงพอแล้วที่จะติดตั้งเซิร์ฟเวอร์ 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 😉


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   LiGNUxer dijo

    ดีมาก!!! สองสามสัปดาห์ก่อนฉันกำลังติดตั้งสิ่งนี้ แต่ด้วย vsftpd และฉันไม่มั่นใจดังนั้นฉันจะลองดูว่ามันเป็นอย่างไร ขอขอบคุณ

    1.    KZKG ^ กาอาระ dijo

      ขอบคุณเพื่อน.
      vsftpd ฉันจำไม่ได้ว่าครั้งสุดท้ายที่ใช้มันคือเมื่อไหร่ ... มันจะกี่ปีแล้ว ... ถ้าฉันเคยใช้ HAHA ตอนนี้กับ PureFTPd ดีใจมากกว่า😀

  2.   เหมาะสม dijo

    ผลงานดีมาก!

    1.    KZKG ^ กาอาระ dijo

      ขอบคุณ compa 😀
      คุณทำในสิ่งที่ทำได้ฮ่า ๆ ….

  3.   ผู้พิทักษ์คอมพิวเตอร์ dijo

    Uuumm น่าสนใจ ... ส่ง IP ของ DB ที่ฉันต้องการให้มีชุดผู้ใช้และรหัสผ่านนั้นอยู่ในมือ😉

    อย่าชั่วเลยมนุษย์

    1.    KZKG ^ กาอาระ dijo

      ฉันไม่เข้าใจฮิฮิ ... คุณกำลังพูดถึง IP กับ DB อะไร?
      หากคุณหมายความว่าข้อมูลเหล่านี้ที่ฉันใส่ในบทช่วยสอนอาจอยู่บนเซิร์ฟเวอร์ด้วยใช่คุณพูดถูก ... พวกเขาอยู่ในบริการ FTP บนพีซีเสมือนบนแล็ปท็อปของฉันมีไฟร์วอลล์ที่ดีมาก (iptables) ดังนั้น… HAHAHAHAHA แน่นอนว่าพวกเขาไม่ได้ชั่วร้าย LOL !!!

  4.   ผู้พิทักษ์คอมพิวเตอร์ dijo

    Joroñaโจโรน่า…. มันจะซับซ้อนกว่าที่ดูเหมือนว่าจะใช้ประโยชน์จากช่องโหว่บางอย่างและดักจับข้อมูลนั้น😉

  5.   อัลกาเบ dijo

    น่าสนใจมาก!! 🙂

    1.    KZKG ^ กาอาระ dijo

      ขอขอบคุณ
      นี่คือสิ่งที่ฉันพยายามทำให้เราแตกต่างจากเว็บไซต์อื่น ๆ ... ที่เราพยายามไม่ให้ข่าวมากนัก แต่เป็นบทความทางเทคนิค😀

  6.   กิสการ์ด dijo

    เร็วแค่ไหนเมื่อเทียบกับ Samba? (เครือข่ายท้องถิ่นเท่านั้น)

    1.    LiGNUxer dijo

      samba และ ftp นั้นเป็น 2 สิ่งที่แตกต่างกัน ftp เป็นโปรโตคอลที่จริงจังและ smb เพียงเพื่ออำนวยความสะดวกในการแชร์ระหว่าง win และ linux
      หากคุณกำลังมองหาประสิทธิภาพบนเครือข่ายให้ใช้บริการ FTP หรือใช้แซมบ้าก็ไม่มีปัญหา

      1.    KZKG ^ กาอาระ dijo

        แน่นอน
        สมมติว่า FTP นั้นร้ายแรงกว่า Samba เล็กน้อยอย่างน้อยก็ในความคิดของฉัน

        ฉันยังไม่ได้ทำการวัดประสิทธิภาพเลย แต่ FTP อาจจะเร็วกว่าเล็กน้อย

        1.    กิสการ์ด dijo

          ขอขอบคุณ. ฉันใช้ Samba เพื่อให้จากคอนโซล Wii ของฉัน (โดยใช้ wiimc) ฉันสามารถดูภาพยนตร์และซีรีส์ที่ฉันดาวน์โหลดลงในคอมพิวเตอร์ได้ แต่ wiimc ยังสามารถเชื่อมต่อกับเซิร์ฟเวอร์ ftp ฉันใช้ Samba เพราะมันง่ายที่สุด แต่ฉันก็รู้สึกทึ่งเสมอว่า ftp จะเร็วกว่าไหม ฉันจะต้องพยายาม

          1.    KZKG ^ กาอาระ dijo

            คุณสามารถติดตั้ง Apache บนพีซีของคุณได้เช่นกันดังนั้น Wii จะเชื่อมต่อสิ่งนี้จะต้องเร็วกว่าแซมบ้า ... และง่ายกว่าในการกำหนดค่ามากกว่า FTP 😀

          2.    กิสการ์ด dijo

            wiimc (เครื่องเล่น Wii Media) ยอมรับการเชื่อมต่อ Samba และ FTP เท่านั้น

  7.   แม็กซ์สตีล dijo

    ยอดเยี่ยม. บทความประเภทนี้ (และไซต์โดยทั่วไป) ต้องการเพียงบางสิ่งเท่านั้นที่จะทำให้ทุกอย่างสมบูรณ์แบบ เทมเพลต CSS เพื่อให้สามารถพิมพ์บทความเป็น PDF หรือบนกระดาษ

  8.   LiGNUxer dijo

    ฉันไม่รู้ว่ามันจะเป็นของฉันเองหรือเปล่า แต่ปัญหาใหญ่ของเรื่องนี้คือผู้ใช้สามารถเข้าถึงไดเร็กทอรีทั้งหมดได้แม้ว่าฉันจะให้ไดเร็กทอรีเฉพาะเช่น "/ var / www / user_site" ก็ตามหากเชื่อมต่อโดย ftp สามารถเข้าถึงได้ทุกที่จากพีซีของฉัน¬¬
    ที่ไม่ปลอดภัยฮ่าฮ่า

  9.   LiGNUxer dijo

    นี่คือ !!!
    เพื่อป้องกันไม่ให้ผู้ใช้ที่เราสร้างขึ้นไม่สามารถนำทางผ่านระบบทั้งหมดของเราเราต้องเพิ่มพารามิเตอร์ "-A" เมื่อเปิดตัว pure ...

    ดังนั้นสิ่งที่เราเพิ่มใน /etc/rc.local ที่คุณใส่ในบทช่วยสอนก็คือสิ่งนี้
    pure-ftpd-mysql -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    และคุณต้องแทนที่ด้วยสิ่งนี้:
    pure-ftpd-mysql -A -l mysql: /etc/pure-ftpd/pure-ftpd-mysql.conf

    เป็นที่ชื่นชมหรือไม่ ... บรรทัดใหม่นี้มีพารามิเตอร์ -A เพื่อ จำกัด ไดเร็กทอรีที่เรากำหนดเท่านั้นและไม่มีสิ่งอื่นใดสามารถสร้างได้ แต่ไม่สามารถเพิ่มระดับได้

    D: fptd บริสุทธิ์ที่น่ารักนี้

    1.    KZKG ^ กาอาระ dijo

      ขอบคุณสำหรับเคล็ดลับ😀

  10.   โรแบร์โต dijo

    สวัสดีเป็นไปได้ที่จะใช้โควต้าในการใช้งาน MySQL และ FTP นี้ขณะนี้ฉันมีเซิร์ฟเวอร์ ftp ที่มี vsftpd และฉันไม่มีปัญหากับโควต้า แต่การเป็นผู้ใช้เสมือน (สร้างใน mysql) โควต้าจะถูกต้องหรือไม่ และอย่างที่สองคือที่เก็บไฟล์ที่อัปโหลดโดยผู้ใช้นั่นคือไดเรกทอรีของผู้ใช้แต่ละคน

    1.    KZKG ^ กาอาระ dijo

      ในทางทฤษฎีคุณสามารถใช้โควต้าได้ในความเป็นจริงฐานข้อมูลมีฟิลด์ที่สร้างขึ้นและไฟล์การกำหนดค่าของบริการ FTP มีการสืบค้นที่กำหนดไว้สำหรับสิ่งนี้ซึ่งในความเป็นจริงฉันไม่ได้ทดสอบสิ่งนี้😉

      เกี่ยวกับตำแหน่งที่ผู้ใช้จะวางไฟล์คุณกำหนดไว้ในฟิลด์ที่ 5 ดูภาพหน้าจอ: https://blog.desdelinux.net/wp-content/uploads/2012/09/phpmyadmin-screenshot-nuevo-usuario.jpg

  11.   โรแบร์โต dijo

    ขอบคุณมากสำหรับความคิดเห็นของคุณฉันจะทดสอบระบบนี้บนเซิร์ฟเวอร์ทดสอบและแสดงความคิดเห็นเกี่ยวกับผลลัพธ์หวังว่าจะทำได้เพราะเป็นวิธีที่ดีในการมีทุกอย่างตามลำดับและด้วย RAID คุณจะมีระบบสำรองที่เสถียร : ง.

    1.    KZKG ^ กาอาระ dijo

      ขอบคุณสำหรับความคิดเห็น🙂

  12.   โรแบร์โต dijo

    ฉันมีคำถามฉันได้จัดการติดตั้ง pure-ftp ด้วย mysql และโควต้าแล้วปัญหาคือฉันจะระงับบัญชีจากตาราง mysql ได้อย่างไรโดยไม่ต้องแก้ไขรหัสผ่านผู้ใช้หรือไฟล์ที่อัปโหลด

    1.    KZKG ^ กาอาระ dijo

      ฉันคิดได้สองวิธีวิธีที่ง่ายที่สุดคือการเปลี่ยนค่าของ Status จาก 1 ถึง 0 ในทางทฤษฎีหากอยู่ที่ 0 บัญชีจะถูกปิดใช้งานให้ลองทำเช่นนี้แล้วบอกฉัน🙂

  13.   birkhoff dijo

    Roberto คุณจัดการกำหนดค่าธรรมเนียมโดยใช้สถานที่นี้ได้อย่างไร? กรุณาแบ่งปันข้อมูล
    เข้าขั้นดีมาก !!

    1.    โรแบร์โต โซเตโล dijo

      Birkhoff ในบล็อกส่วนตัวของฉันฉันสร้างหัวข้อเกี่ยวกับเรื่องนั้นฉันทิ้งลิงค์ไว้ให้คุณตรวจสอบ:

      http://aprendelinux.net/instalar-servidor-ftp-pure-ftp-con-cuentas-virtuales-en-mysql/

  14.   เคลาส์ dijo

    ทักทาย:

    ฉันพยายามทำตามทุกอย่าง แต่ได้รับข้อผิดพลาด 501 และที่สำคัญที่สุดคืออ้างถึงข้อเท็จจริงที่ว่ารหัสผ่านไม่ถูกต้องเมื่อฉันรู้ว่าใช้ได้