ในบล็อกนี้เราได้พูดถึงระบบฐานข้อมูลบางระบบซึ่งระบบที่ได้รับความนิยมมากที่สุด ได้แก่ MariaDB และ MySQL เนื่องจากเป็นระบบที่มักรวมอยู่ใน Xampp หรือ Lampp คราวนี้เราจะมาพูดถึง อีกระบบหนึ่งซึ่งก็คือ MongoDB
MongoDB คือ เอกสารโอเพ่นซอร์สที่เน้นระบบฐานข้อมูล NoSQL, นี่คือ ระบบจัดการฐานข้อมูลเอกสารที่ทันสมัยออกแบบมาเพื่อการคงอยู่ของข้อมูลที่มีประสิทธิภาพสูง ความพร้อมใช้งานสูงเช่นเดียวกับการปรับขนาดอัตโนมัติโดยอาศัยเทคโนโลยีของเทคนิค NoSQL
แทนที่จะบันทึกข้อมูลในตารางเหมือนที่ทำในฐานข้อมูลเชิงสัมพันธ์ MongoDB จะบันทึกโครงสร้างข้อมูลในเอกสารซึ่งเป็นโครงสร้างข้อมูลที่ประกอบด้วยคู่ฟิลด์และค่า (เอกสาร MongoDB เปรียบได้กับออบเจ็กต์ JSON)
เนื่องจากมีประสิทธิภาพสูงและมีคุณสมบัติในการปรับขนาดที่ยอดเยี่ยมจึงถูกนำมาใช้เพื่อสร้างแอปพลิเคชันสมัยใหม่ที่ต้องการฐานข้อมูลที่ทรงพลังมีความสำคัญสูง
การติดตั้ง MongoDB บน Ubuntu
ในการติดตั้งระบบฐานข้อมูลนี้ในระบบของเรา เราต้องเปิดเทอร์มินัลและดำเนินการตามคำสั่งต่อไปนี้:
sudo apt install mongodb
การติดตั้งเสร็จสิ้น บริการ MongoDB จะเริ่มโดยอัตโนมัติผ่าน systemd และกระบวนการจะทำงานบนพอร์ต 27017 คุณสามารถตรวจสอบสถานะได้โดยใช้คำสั่ง:
sudo systemctl status mongodb
ถ้าไม่เราสามารถบังคับให้เริ่มต้นด้วยคำสั่งนี้:
sudo systemctl start mongodb
การเปิดใช้งานการเชื่อมต่อระยะไกลกับ MongoDB
โดยค่าเริ่มต้นระบบฐานข้อมูล MongoDB จะใช้พอร์ต 27017 ซึ่งเราต้องเปิด ในการยอมรับการเชื่อมต่อระยะไกลเราเปิดใช้งานด้วยคำสั่งต่อไปนี้เท่านั้น
sudo ufw allow 27017
โดยค่าเริ่มต้นพอร์ต 27017 สามารถเข้าถึงได้จากโลคัลแอดเดรส 127.0.0.1 เท่านั้น ในการอนุญาตการเชื่อมต่อระยะไกลไปยัง MongoDB จำเป็นต้องเพิ่มที่อยู่ IP ของเซิร์ฟเวอร์ในไฟล์ /etc/mongodb.conf
เพียงแก้ไขด้วย:
sudo nano
และเราจะเห็นสิ่งที่คล้ายกับสิ่งนี้:
bind_ip = 127.0.0.1, your_server_ip #port = 27,017
ซึ่งเราแก้ไขด้วยข้อมูลจากเซิร์ฟเวอร์ของเรา
การอนุญาตให้เข้าถึง MongoDB จากทุกที่ทำให้สามารถเข้าถึงข้อมูลในฐานข้อมูลได้อย่างไม่ จำกัด ดังนั้นจึงเป็นการดีกว่าที่จะให้การเข้าถึงที่อยู่ IP เริ่มต้นเฉพาะตำแหน่งของพอร์ต MongoDB
sudo ufw allow from your_server_IP/32 to any port 27017 sudo ufw status
เมื่อเสร็จแล้วก็เพียงพอที่จะเริ่มบริการใหม่เพื่อให้การเปลี่ยนแปลงใหม่ถูกโหลดในตอนเริ่มต้นสิ่งนี้เราทำกับ:
sudo systemctl restart mongodb
สร้างผู้ใช้ใน MongoDB ด้วยรหัสผ่าน
โดยค่าเริ่มต้นฐานข้อมูลมีการเข้าถึงที่ค่อนข้างง่ายดังนั้นเพื่อเสริมสร้างสิ่งนี้เราสามารถสร้างผู้ใช้ด้วยรหัสผ่าน
MongoDB ใช้กลไกการพิสูจน์ตัวตน SCRAM โดยค่าเริ่มต้น. การใช้ SCRAM บนระบบจะตรวจสอบข้อมูลรับรองผู้ใช้ที่ให้มากับชื่อผู้ใช้รหัสผ่านและฐานข้อมูลการพิสูจน์ตัวตน
เพียงเริ่มคอนโซลฐานข้อมูลด้วยคำสั่งต่อไปนี้:
Mongo
เราสามารถสร้างรายการฐานข้อมูลที่มีอยู่ด้วย:
show dbs
เราสามารถสร้างผู้ใช้ที่จะช่วยให้เราสามารถจัดการผู้ใช้และฟังก์ชันต่างๆ เช่นการสร้างผู้ใช้การอนุญาตหรือการเพิกถอนบทบาทของผู้ใช้และการสร้างหรือแก้ไขบทบาทศุลกากร
เพียงพิมพ์
use admin
และเราสร้างผู้ใช้ด้วยคำสั่งต่อไปนี้โดยที่เราแทนที่ชื่อของผู้ใช้ "root" และรหัสผ่าน "password" โดยการเข้าถึงที่เราเห็นว่าเหมาะสม
db.createUser({user:"root", pwd:"password", roles:[{role:"root", db:"admin"}]})
เมื่อเสร็จแล้วเราต้องเปิดใช้งานวิธีการรับรองความถูกต้อง สำหรับสิ่งนี้เราจะแก้ไขไฟล์ต่อไปนี้:
sudo nano /lib/systemd/system/mongodb.service
และเราจะมองหาบรรทัดถัดไป:
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
และ แก้ไขเพื่อให้เป็นดังนี้:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
ตอนนี้ เราเพียงแค่รีบูตในฐานข้อมูล
systemctl daemon-reload sudo systemctl restart mongodb sudo systemctl status mongodb
Y เราทดสอบวิธีการรับรองความถูกต้องด้วย:
mongo -u "usuario" -p --authenticationDatabase "contraseña"
ช่วยฉันด้วยข้อผิดพลาดนี้
2021-03-24T21: 33: 16.233 + 0000 E QUERY [thread1] ข้อผิดพลาด: listDatabases ล้มเหลว: {
«ตกลง»: 0,
"Errmsg": "ไม่ได้รับอนุญาตให้ผู้ดูแลระบบดำเนินการคำสั่ง {listDatabases: 1.0, $ db: \" admin \ "}",
"รหัส": 13,
"CodeName": "ไม่ได้รับอนุญาต"
}:
_getErrorWithCode@src/mongo/shell/utils.js: 25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js: 65: 1
shellHelper.show@src/mongo/shell/utils.js: 816: 19
shellHelper@src/mongo/shell/utils.js: 706: 15
@ (shellhelp2): 1: 1