Nội dung bài viết
Video học lập trình mỗi ngày
Connect server MongoDB từ xa hay từ một server khác đó là một mô hình bình thường hiện nay. Bài viết này sẽ hướng dẫn cho người mới làm quen với mongodb có thể làm được điều mà chỉ có những chuyên về admin mới làm được.
Bài viết này có trong Series - Mongodb.
Để hiểu được và có thể thao tác được, trước tiên tôi mong muốn về cơ bản, bạn phải hiểu MongoDB là gì? Và đương nhiên là phải có những thao tác trên LINUX
.
Bài học này bạn được những gì?
- Cách tạo một database và tạo quyền truy cập vào db trên Mongoodb.
- Cách cho phép mọi ip address connect từ xa tới MongoDB
- Chỉ cho phép một số ip address truy cập từ xa tới MongoDB
MongoDB create user
Đầu tiên chính xác là bạn truy cập và ssh
, và tạo một user trên mongodb mà chúng ta đã nói đến ở Mongodb create database and user terminal:
> db.createUser(
{
user: "new_user",
pwd: "some_password",
roles: [ { role: "readWrite", db: "anonystick" } ]
}
)
Enable MongoDB Auth
Đến bước này thì việc duy nhất là bạn tìm tới file config mongodb /etc/mongod.conf
. Sau đó sửa file này như sau:
sudo vim /etc/mongod.conf
Sau khi mở ra thì tìm đến line này:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
bindIp
: chính là nơi chứa những ip address được cho phép truy cập. Mặc định là chỉ có connect bằng localhost
.Đến đây không thể không nhắc đến vấn đề bảo mật trong mongodb, đó là mỗi lần config vui lòng backup mongodb sử dụng mongodump. Cẩn thận trên hết nhé các đồng chí.
Warning: Đừng có comment lại #bindIp
. Nếu bạn làm như vậy đồng nghĩa với việc bạn sẽ cho phép tất cả các nơi truy cập vào admin MongoDB của bạn.
Giờ bạn muốn thêm một Server A truy cập đến Server chứa MongoDB thì hãy làm như sau: Đầu tiên bạn phải làm là sử dụng lệnh:
anonystick:~# ip a |grep net
inet 127.0.0.1/3 scope host lo
inet6 xxxx scope host
inet 12.13.14.15/23 brd xxxxx scope global dynamic ens3
inet6 xxxxx/64 scope link
Để làm gì? Để bạn có thể thấy được ip address đang xài là gì? Ở đây chính là dòng thứ 3 12.13.14.15
. Khi lấy được rồi bạn sửa lại file config trên như tôi đã nói :
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,12.13.14.15
Nghĩa là server khác sẽ truy cập và connect mongodb qua 12.13.14.15
này.
Restart mongo daemon (mongod)
Sau khi edit thành công thì đương nhiên phải reload lại mongo.
sudo service mongod restart
Sau đó check lệnh mongo
lên xem. Hoặc bạn có thể sử dụng
tail -f /var/log/mongodb/mongod.log
Để theo dõi log...
Kết nối mongodb từ xa Và sau cùng là ta lấy server A connect tới bằng nhiều cách như Connect mongodb Nodejs, nhưng ở đâu tôi dùng Sell cho nhanh:
mongo -u ian -p secretPassword 12.13.14.15/abc
MongoDB security
Ở đây 12.13.14.15
chính là ip mình đã config ở trên kia. Tới bước này rồi, có thể là tạm thời nói rằng bạn đã thành công. Nhưng còn một chuyện đó là vấn đề bảo mật. Có ai đặt câu hỏi rằng, nếu như vậy thì tất cả có thể truy cập vào database từ xa, cho dù là ai? Đúng là như vậy, chính vì vậy một bước cuối cùng để MongoDB security
chính là phải cấu hình lại, ip address
nào được phép truy cập. Đó là việc điều chỉnh lại Firewall trong hệ thống. Bài viết này đã dài, cho nên tôi nghĩ sẽ để vấn đề này cho một bài viết khác có tên là "Adjusting the Firewall'.
Và đó là tất cả bài hướng dẫn của chủ đề ngày hôm nay. Xin chào!