Kiểm tra xem mongodb từ xa có đang chạy không

Tôi có MongoDB đang chạy trên máy chủ Ubuntu của mình trong Amazon EC2. Vì không có hướng dẫn tất cả trong một đơn giản nào giải thích cách thiết lập xác thực người dùng cho Mongo để bạn có thể đọc và ghi vào máy chủ MongoDB từ máy tính xách tay của mình, nên tôi quyết định viết một hướng dẫn.

Nếu bạn chưa cài đặt MongoDB, hãy làm theo các bước tại https. // tài liệu. mongodb. com/manual/tutorial/install-mongodb-on-ubuntu/ đầu tiên

1. Thiết lập người dùng của bạn

Đầu tiên

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
0 vào máy chủ của bạn và nhập vỏ mongo bằng cách nhập
# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
1. Trong ví dụ này, tôi sẽ thiết lập một người dùng có tên là
# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
0 và cấp cho người dùng đó quyền truy cập đọc và ghi vào cơ sở dữ liệu
# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
1

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})

2. Cho phép xác thực và mở quyền truy cập MongoDB lên tới tất cả các IP

Chỉnh sửa tệp cấu hình MongoDB của bạn. Trên Ubuntu

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
2

  • Tìm dòng
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    3 và nhận xét dòng
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    4 bên dưới, dòng này hiện đang giới hạn kết nối MongoDB với localhost

Cảnh báo. không bình luận ra khỏi dòng

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
4 mà không kích hoạt ủy quyền. Nếu không, bạn sẽ mở toàn bộ internet để có quyền truy cập đầy đủ của quản trị viên vào tất cả các cơ sở dữ liệu mongo trên máy chủ MongoDB của bạn

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line

  • Cuộn xuống phần
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    6 và thêm dòng sau. Đảm bảo bỏ nhận xét dòng
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    7

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
0

3. Mở cổng 27017 trên phiên bản EC2 của bạn
  • Chuyển đến bảng điều khiển EC2 của bạn. https. // bảng điều khiển. aws. amazon. com/ec2/
  • Truy cập
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    8 và cuộn xuống để xem Nhóm bảo mật của phiên bản của bạn. Ví dụ, nó sẽ giống như
    # network interfaces
    net:
      port: 27017
    #  bindIp: 127.0.0.1  <- comment out this line
    
    9
  • Chuyển đến tab ________ 100 -> ________ 101 -> tab ______ 102 -> nút ________ 103
  • Tạo một TCP tùy chỉnh mới trên cổng 27017, Nguồn. Bất cứ đâu, 0. 0. 0. 0/0
4. Bước cuối cùng. khởi động lại daemon mongo (mongod)

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
04

Đảm bảo rằng bạn vẫn có thể đăng nhập bằng

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
1 trong khi ssh'd vào hộp

Nếu có gì sai, hãy nhìn vào nhật ký.

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
06 (lưu ý. các máy không phải Ubuntu sẽ giữ nhật ký trong một thư mục khác…)


Đăng nhập bằng shell
# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
1 trên máy tính xách tay của bạn

Bạn có thể đóng ssh và quay lại bảng điều khiển cục bộ của mình. Để vào cơ sở dữ liệu Mongo từ xa mà chúng ta vừa thiết lập, bạn có thể sử dụng shell mongo

Trong hướng dẫn này, chúng ta sẽ học cách kết nối với MongoDB đang chạy trên một máy từ xa. Cấu hình mặc định của MongoDB chỉ cho phép các kết nối từ cùng một máy chủ nơi nó được cài đặt. MongoDB có thể được quản lý từ xa hoặc kết nối với một máy chủ ứng dụng riêng biệt bằng cách thực hiện một số thay đổi đối với cấu hình mặc định

Trước tiên, chúng tôi sẽ cài đặt MongoDB bằng bộ chứa docker, sau đó định cấu hình cài đặt MongoDB để truy cập từ một máy từ xa đáng tin cậy một cách an toàn. Điều quan trọng là chúng tôi đang kích hoạt kết nối từ xa, chúng tôi cũng cần bảo mật cài đặt MongoDB bằng cách tạo tài khoản người dùng quản trị cho cơ sở dữ liệu

Hãy xem xét các kết nối từ xa cho máy chủ MongoDB

2. Cài đặt MongoDB bằng Docker

Để thiết lập kết nối từ xa trong MongoDB, trước tiên chúng ta cần cài đặt MongoDB. Cách dễ nhất để thiết lập MongoDB trên máy Linux là sử dụng bộ chứa docker. Một trong những lợi ích của việc sử dụng docker cho MongoDB là cơ sở dữ liệu được chứa nhất quán trên nhiều môi trường, cho phép thiết lập phát triển nhanh hơn

Lệnh kéo hình ảnh Mongo Docker mới nhất

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  <- comment out this line
9

Ở đây, trong lệnh trên, chúng ta đã kéo image Docker, bây giờ để minh họa, hãy chạy một container bằng nó

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
0

Chúng tôi sẽ bắt đầu vùng chứa với tên vùng chứa “mongodb“

3. Tạo người dùng quản trị

Trước khi tiếp tục mở các kết nối từ xa cho MongoDB, trước tiên chúng ta cần kích hoạt xác thực trong MongoDB. Tuy nhiên, xác thực bị tắt trong cấu hình mặc định, có nghĩa là bất kỳ người dùng nào có quyền truy cập vào máy chủ chứa MongoDB đều có toàn quyền truy cập vào tất cả các cơ sở dữ liệu. Để bảo mật cơ sở dữ liệu, chúng tôi sẽ tạo người dùng quản trị và cho phép xác thực kết nối với cơ sở dữ liệu bằng cách sử dụng người dùng quản trị một cách an toàn

Trước tiên chúng ta cần vào shell bằng lệnh bên dưới để tạo người dùng quản trị

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
1

Để kích hoạt xác thực, chúng ta cần sử dụng quản trị cơ sở dữ liệu

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
2

Ở đây, chúng ta sẽ sử dụng phương thức createUser của cơ sở dữ liệu quản trị. Sử dụng điều này, chúng tôi có thể gán nhiều vai trò cho một người dùng. Các vai trò được gán cho người dùng quản trị cấp cho họ tất cả các đặc quyền cần thiết để tạo và sửa đổi người dùng cũng như đọc và ghi vào bất kỳ cơ sở dữ liệu nào

Phương thức createUser yêu cầu tên người dùng và mật khẩu cho người dùng và bất kỳ vai trò nào chúng tôi muốn người dùng có. Ở đây chúng ta cần tạo một tài liệu chứa tất cả các chi tiết liên quan đến thông tin đăng nhập và vai trò của người dùng

Để chứng minh, hãy gọi phương thức createUser để gán vai trò cho người dùng quản trị

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
3

Trong trường hợp này, đầu ra của lệnh trên sẽ là

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
4

Trong lệnh trên, chúng tôi đã tạo một người dùng baeldung với mật khẩu “baeldung” và cung cấp toàn quyền truy cập cho người dùng này. passwordPrompt cũng có thể được sử dụng để nhắc mật khẩu trên thiết bị đầu cuối thay vì cung cấp nó trong JSON

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
5

Một điểm quan trọng cần lưu ý là chúng ta cũng cần khởi động lại daemon MongoDB. Nếu không, những thay đổi sẽ không được phản ánh

4. Kích hoạt xác thực MongoDB

Bây giờ, quản trị viên của chúng tôi đã được thiết lập và người dùng dành riêng cho cơ sở dữ liệu đã được tạo. Tiếp theo, chúng ta phải kích hoạt MongoDB để bắt đầu sử dụng các điều khiển truy cập này. Cụ thể ở đây chúng ta cần cập nhật cấu hình của mongodb. tập tin conf

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
6

trong mongod. conf, trước tiên chúng tôi phải nhận xét hoạt độngProfiling, sau đó kích hoạt ủy quyền dưới sự bảo mật

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
7

Cuối cùng, MongoDB thực thi kiểm soát truy cập cơ sở dữ liệu bằng các vai trò mà chúng ta đã tạo ở bước trước khi khởi động lại máy chủ

5. Định cấu hình IP liên kết công cộng

Cho đến nay, chúng tôi đã cài đặt MongoDB bằng docker và kích hoạt cấu hình xác thực mongo. Theo mặc định, MongoDB chỉ chấp nhận các kết nối từ localhost. Do đó, chúng ta cần cho phép kết nối từ xa. trong mongod. conf tệp, chúng ta cần chuyển đến phần giao diện mạng và thay đổi bindIp thành 0. 0. 0. 0, có nghĩa là cho phép kết nối từ bất kỳ địa chỉ IP nào

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
8

Hơn nữa, chúng ta phải khởi động lại trình nền MongoDB để xem các thay đổi

6. Kết nối từ xa

Bây giờ chúng tôi đã định cấu hình MongoDB để lắng nghe các kết nối từ xa trên địa chỉ IP có thể định tuyến công khai của nó. Ở đây chúng tôi có thể kiểm tra xem máy từ xa có thể kết nối hay không. Để chứng minh, hãy kiểm tra lệnh để kết nối với MongoDB từ xa

use cool_db

db.createUser({
    user: 'ian',
    pwd: 'secretPassword',
    roles: [{ role: 'readWrite', db:'cool_db'}]
})
00

Sử dụng lệnh trên, chúng ta có thể truy cập MongoDB bằng xác thực

7. Phần kết luận

Trong bài viết này, chúng ta đã học cách định cấu hình quyền truy cập từ xa của MongoDB. Đầu tiên, chúng tôi đã cài đặt MongoDB bằng bộ chứa docker. Ngoài ra, chúng tôi cũng khám phá xác thực người dùng gán các vai trò khác nhau

Cuối cùng, chúng tôi đã bật xác thực và định cấu hình IP ràng buộc công khai. Nói tóm lại, chúng tôi đã cài đặt MongoDB và kích hoạt kết nối từ xa

tác giả dưới cùng

Nếu bạn có một vài năm kinh nghiệm trong hệ sinh thái Linux và bạn muốn chia sẻ trải nghiệm đó với cộng đồng, hãy xem Nguyên tắc đóng góp của chúng tôi

Làm cách nào để truy cập MongoDB từ xa?

Cách kết nối với máy chủ MongoDB từ xa của bạn .
Thiết lập người dùng của bạn. Đầu tiên ssh vào máy chủ của bạn và nhập shell mongo bằng cách gõ mongo. .
Cho phép xác thực và mở quyền truy cập MongoDB lên tới tất cả các IP. Chỉnh sửa tệp cấu hình MongoDB của bạn. .
Mở cổng 27017 trên phiên bản EC2 của bạn. .
Bước cuối cùng. khởi động lại daemon mongo (mongod)

Cách kết nối với MongoDB từ xa từ lệnh

Phiên bản MongoDB trên Máy chủ từ xa .
You can use the command-line option --host : . For example, to connect to a MongoDB instance running on a remote host machine: .. .
You can use the --host and --port command-line options..

MongoDB có ở xa không?

Cấu hình mặc định của MongoDB chỉ cho phép các kết nối từ cùng một máy chủ mà nó được cài đặt. MongoDB có thể được quản lý từ xa hoặc kết nối với một máy chủ ứng dụng riêng biệt bằng cách thực hiện một số thay đổi đối với cấu hình mặc định .

Làm cách nào để kiểm tra trạng thái dịch vụ MongoDB trong Linux?

Để xác minh trạng thái của dịch vụ, hãy nhập. Sudo systemctl status mongodb .