Hướng dẫn mongodb allow remote connections windows - mongodb cho phép các cửa sổ kết nối từ xa

Hình ảnh lịch sự //mongodb.com

Tại Ithaka, khá nhiều trong số các dịch vụ microsb của chúng tôi sử dụng MongoDB 3.6 để tồn tại dữ liệu. Nếu bạn đã sử dụng MongoDB, có lẽ bạn đã biết rằng bắt đầu từ phiên bản 3.4 MongoDB, WiredTiger Engine chiếm một lượng RAM đáng kể. Để cụ thể, nó sẽ mất 50% [RAM trừ 1GB] hoặc 256 MB, tùy theo mức nào cao hơn. Bạn có thể đọc thêm về cách thức và tại sao trong hướng dẫn của họ.

Điều này, cùng với sự hiểu biết chung rằng không bao giờ là một ý tưởng tốt để chạy dịch vụ cơ sở dữ liệu của bạn trên cùng một phiên bản máy chủ với dịch vụ sản xuất của bạn, cho thấy rõ rằng bạn cần thiết lập máy chủ MongoDB từ xa mà dịch vụ của bạn sau đó kết nối.

Các bước cấp cao:

  1. Thiết lập một thể hiện EC2 mới
  2. Người dùng cơ sở dữ liệu thiết lập và gán cho họ vai trò
  3. Bật MongoDB Auth để bảo vệ quyền truy cập vào cơ sở dữ liệu
  4. Mở cổng mạng để kết nối với MongoDB
  5. Kết nối với máy chủ từ xa

Xin lưu ý rằng mặc dù tại Ithaka, chúng tôi sử dụng một bản phân phối Linux trên các phiên bản EC2, các điểm được đề cập trong bài viết này đủ chung để hoạt động trên hầu hết các kết hợp đám mây+OS. Không có cách nào, hãy để Lừa để thiết lập mọi thứ.

1. Thiết lập một thể hiện EC2 mới

Trước khi thực hiện điều này, hãy tính đến kích thước cơ sở dữ liệu và số lượng chỉ mục của bạn để quyết định không gian đĩa và RAM tối ưu cho ví dụ của bạn. Một tính toán đơn giản phù hợp với chúng tôi là cứ 16 GB dữ liệu trong DB, chúng tôi phân bổ 1GB RAM cho WiredTiger vì cách cấu trúc dữ liệu của chúng tôi. Có nghĩa là đối với 16 GB dữ liệu được lưu trữ mà máy chủ của bạn cần có RAM 2GB ít nhất. Khi phiên bản EC2 của bạn được thiết lập, SSH vào ví dụ và cài đặt MongoDB.

2. Người dùng cơ sở dữ liệu thiết lập và gán cho họ vai trò

Giống như tất cả các cơ sở dữ liệu khác, MongoDB có hỗ trợ được xây dựng để kiểm soát truy cập. Bạn có thể tạo người dùng và gán cho họ các vai trò khác nhau và các cấp độ truy cập khác nhau vào cơ sở dữ liệu. Đối với phạm vi của bài viết này, chúng ta hãy tuân thủ hai vai trò quan trọng - người dùng quản trị và DB. Sử dụng vai trò quản trị viên, bạn có thể tạo người dùng DB và gán cho họ vai trò trên cơ sở dữ liệu riêng lẻ.

Mở vỏ Mongo

ubuntu:~$ mongo

Bên trong Mongo Shell truy cập cơ sở dữ liệu quản trị. Tạo người dùng quản trị viên mới.

> use admin;
> db.createUser[{
user: "admin",
pwd: "myadminpassword",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" }
]
}];

Bạn có thể gán nhiều vai trò cho một người dùng trong một lần. Các vai trò này cấp cho người dùng quản trị tất cả các đặc quyền cần thiết để tạo người dùng, sửa đổi người dùng, đọc và ghi vào bất kỳ cơ sở dữ liệu nào.

Bây giờ tạo người dùng DB và cấp cho họ vai trò trên cơ sở dữ liệu tương ứng của họ. Nếu hệ thống của bạn bao gồm nhiều cơ sở dữ liệu, là một ý tưởng tốt để có một người dùng riêng cho mỗi cơ sở dữ liệu.

> db.createUser[{
user: "user1",
pwd: "user1password",
roles: [
{ role: "userAdmin", db: "sampledb" },
{ role: "dbAdmin", db: "sampledb" },
{ role: "readWrite", db: "sampledb" }
]
}];

Lưu ý làm thế nào các vai trò đã thay đổi ở đây. Nếu bạn cố gắng gán một trong các vai trò của quản trị viên như Hồi UserAdMinanyDatabase, cho người dùng trên bất kỳ cơ sở dữ liệu phi quản trị nào, Mongo sẽ đưa ra một lỗi cho biết rằng vai trò đó không được xác định trên cơ sở dữ liệu đó. Vai trò quản trị chỉ hoạt động trên cơ sở dữ liệu quản trị viên.

3. Bật MongoDB Auth

Khi quản trị viên của bạn được thiết lập và người dùng cụ thể cơ sở dữ liệu đã được tạo, giờ đây đã đến lúc cho phép MongoDB bắt đầu sử dụng các điều khiển truy cập này. Để làm như vậy, hãy mở tệp Cấu hình MongoDB:

sudo vim /etc/mongod.conf

Trong tệp này, thêm các dòng sau:

security:
authorization: 'enabled'

Điều này sẽ nói với MongoDB rằng bất cứ khi nào nó bắt đầu tiếp theo, nó cần thực thi kiểm soát truy cập cơ sở dữ liệu bằng cách sử dụng các vai trò chúng tôi đã tạo trong bước trước.

Theo mặc định MongoDB được cấu hình để chỉ cho phép các kết nối từ localhost. Chúng ta cần cho phép các kết nối từ xa. Trong cùng một tệp cấu hình, hãy chuyển đến phần Giao diện mạng và thay đổi BINDIP từ 127.0.0.1 thành 0.0.0.0 có nghĩa là cho phép các kết nối từ tất cả các địa chỉ IP.bindIp from 127.0.0.1 to 0.0.0.0 which means allow connections from all ip addresses.

# network interfaces
net:
port: 27017
bindIp: 0.0.0.0 #default value is 127.0.0.1

Bây giờ hãy lưu và thoát tệp cấu hình và khởi động lại máy chủ MongoDB.

ubuntu:~$ sudo service mongod restart

Bây giờ nếu bạn cố gắng truy cập vào vỏ Mongo bằng cách gõ Mongo vào thiết bị đầu cuối, bạn sẽ vượt qua nhưng won có thể truy cập bất kỳ cơ sở dữ liệu nào. Bạn cần sử dụng người dùng được tạo để truy cập cơ sở dữ liệu.

# to access the admin database
ubuntu:~$ mongo -u admin -p myadminpassword 127.0.0.1/admin
# to access the other databases
ubuntu:~$ mongo -u user1 -p user1password 127.0.0.1/sampledb

Tuy nhiên, chúng tôi vẫn đang truy cập vào vỏ Mongo từ trong trường hợp EC2. Chúng tôi đã cố gắng kết nối từ xa. Để có thể làm điều đó, thay đổi cài đặt mạng của thể hiện EC2 của bạn.

4. Mở cổng mạng trên thể hiện EC2

MongoDB sử dụng số cổng 27017 cho tất cả các kết nối theo mặc định. Vì vậy, hãy để mở ra cổng đó. Bạn có thể truy cập cài đặt mạng của bảng điều khiển AWS của mình và mở lưu lượng truy cập trong và ngoài trên cổng 27017. Sử dụng TCP tùy chỉnh làm giao thức. Thông tin thêm về điều đó ở đây. Nếu điều đó không hoạt động, SSH vào ví dụ của bạn và chạy các lệnh sau

ubuntu:~$ sudo iptables -A INPUT -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPTubuntu:~$ sudo iptables -A OUTPUT  -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

5. Kiểm tra các kết nối từ xa

Thoát khỏi phiên bản EC2 của bạn và thử kết nối với máy chủ cơ sở dữ liệu từ máy cục bộ của bạn

ubuntu:~$ mongo -u user1 -p user1password /sampledb

Lưu ý: Mặc dù làm theo các hướng dẫn này, bạn vẫn có thể gặp các vấn đề khi kết nối với cơ sở dữ liệu từ xa trong mã của bạn. Và những vấn đề đó chủ yếu là cụ thể cho thư viện mà bạn sử dụng trong mã của mình. Cho đến nay, chúng tôi đã giải quyết các vấn đề với pymongo cho Python, MGO cho Golang và Mongoose cho Node.js. Nếu bạn đang sử dụng bất kỳ trong số này, hãy đưa tôi trên Twitter @MithileshsAid và tôi sẽ rất vui khi được giúp đỡ.

Làm cách nào để cho phép các kết nối từ xa đến MongoDB?

Nhận MongoDB trên Linux để nghe các kết nối từ xa..
Tổng quan. Trong hướng dẫn này, chúng ta sẽ học cách kết nối với MongoDB chạy trên máy từ xa. ....
Cài đặt MongoDB bằng Docker. ....
Tạo người dùng quản trị. ....
Bật xác thực MongoDB. ....
Định cấu hình IP liên kết công cộng. ....
Kết nối từ xa. ....
Conclusion..

Làm thế nào tôi có thể truy cập MongoDB từ một máy tính khác trong Windows?

Để kết nối với MongoDB từ một máy khác, bạn phải mở cổng 27017 để truy cập từ xa.Tham khảo Câu hỏi thường gặp để biết thêm thông tin về điều này.Quan trọng: Theo mặc định, cổng cơ sở dữ liệu cho các nút trong giải pháp này không thể được truy cập qua địa chỉ IP công cộng.open port 27017 for remote access. Refer to the FAQ for more information on this. IMPORTANT: By default, the database port for the nodes in this solution cannot be accessed over a public IP address.

Làm cách nào để kích hoạt xác thực trong các cửa sổ MongoDB?

Làm thế nào để cho phép xác thực trong MongoDB..
Tạo một quản trị viên trong cơ sở dữ liệu quản trị với vai trò userAdMinanyDatabase.....
Ngắt kết nối với vỏ Mongo [Ctrl+D] ..
Xác định vị trí mã sau trong tệp cấu hình Mongod [ /etc /Mongod. ....
Thay đổi ủy quyền bị vô hiệu hóa để bật và lưu tệp ..

Làm cách nào để kết nối với kết nối MongoDB?

Để kết nối với máy chủ MongoDB bằng tên người dùng và mật khẩu, bạn phải sử dụng 'tên người dùng@hostname/dbname'.Trong đó tên người dùng là tên người dùng, mật khẩu là mật khẩu cho người dùng đó và dbName là cơ sở dữ liệu mà bạn muốn kết nối.Lưu ý: Bạn có thể sử dụng nhiều tên máy chủ để kết nối với một lệnh.username@hostname/dbname'. Where username is the username, password is the password for that user and dbname is the database to which you want to connect to. Note : You can use multiple hostname to connect to with a single command.

Bài Viết Liên Quan

Chủ Đề