How to connect to your remote mongoDB server
Problem
Mình có MongoDB đang chạy trên Ubuntu Server trên Amazon EC2. Sau khi cài đặt xong mình muốn có thể access vào DB từ localhost để test/check DB khi cần thiết. Vậy làm như thế nào ??
Problem solving
Sau khi tìm hiểu thì mình đã tìm ra cách giải quyết nó, và dưới đây là các step nhé :
1 Set up user
Đầu tiên bạn cần ssh
lên server và truy cập vào mongo shell bằng cách nhập mongo
. Trong ví dụ này mình sẽ setup 1 user name tannguyen
, có quyền read & write lên mongo_db
databse.
1
2
3
4
5
6
7
use mongo_db
db.createUser({
user: 'tannguyen',
pwd: 'your_password',
roles: [{ role: 'readWrite', db:'mongo_db'}]
})
2. Enable auth and open MongoDB access up to all IPs
Bạn edit file /etc/mongod.conf
, ở đây mình edit bằng nano
1
sudo nano /etc/mongod.conf
Bạn scroll xuống, nhìn thấy dòng bindIp
, thì mặc định nó sẽ là 127.0.0.1, tức là MongoDB hiện tại chỉ cho phép kết nối từ localhost, vì vậy bạn muốn access từ local thì bạn phải comment đoạn này lại nhé
1
2
3
4
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 <- comment out this line
Và nếu như mình đã cho phép tất cả các nơi đều có thể access vào DB thì bạn cần phải thêm 1 config nữa là chỉ cho phép những user có trong system mới được login.
Bạn scroll xuống dưới 1 tí nữa sẽ thấy đoạn #security
, và giờ chúng ta sửa thành như này nhé
1
2
security:
authorization: 'enabled'
3 Open port 27017 on your EC2 instance
Chắc các bạn xài EC2 sẽ biết đến Security Groups
của 1 instance, nếu bên trong bạn listen port 27017
mà bạn không thêm nó vào Security Groups
thì sẽ không thể nào connect đến được,
- Vào trang dashboard của EC2: https://console.aws.amazon.com/ec2/
- Đi đến EC2 Instance của bạn và scroll xuống, bạn sẽ thấy 1 cái
Security Groups
- Click vào
Security Groups
và editInbound
tab - Chọn
Edit Inbound Rules
và tạo 1Custom TCP
cho port27017
và Source bạn chọnAnywhere
4. Last step: Restart mongo daemon (mongod)
Đến đây là xong bước config cho MongoDB, bạn chỉ cần restart lại là OK
1
sudo service mongod restart
Check result
Bước này bạn cần test lại xem thử việc mình config nó có thực sự hoạt động tốt hay không bằng cách chạy command dưới:
Giả sử EC2 bạn có IP là: 12.34.56.78
1
mongo -u tannguyen -p your_password 12.34.56.78/cool_db
Nếu báo kết nối success là OK Hoặc bạn có thể dùng 1 tool nào khác để test cũng được
Cảm ơn các bạn đã đọc