Docker-soạn mật khẩu tên người dùng MongoDB

MongoDB không sử dụng bất kỳ xác thực nào theo mặc định. Đảm bảo bạn thay đổi điều này trước khi sử dụng cơ sở dữ liệu của mình trong sản xuất

Ảnh của Croissant trên Bapt

MongoDB không sử dụng bất kỳ xác thực nào theo mặc định. Điều này nên được thay đổi khi mở cơ sở dữ liệu lên internet

Trong bài viết này, tôi sẽ mô tả cách bạn có thể kích hoạt xác thực cho MongoDB bên trong Portainer — một giao diện web cho Docker

Thêm xác thực vào MongoDB

  1. Mở giao diện Portainer của bạn
  2. Nếu bạn chưa có, hãy cài đặt MongoDB. (Bạn có thể làm điều này thông qua các mẫu ứng dụng trên Portainer. )
  3. Đi vào bảng điều khiển của bộ chứa MongoDB của bạn

4. Viết mongo vào bảng điều khiển

5. Thay đổi cơ sở dữ liệu admin

> use admin

6. Tạo người dùng mới

> db.createUser(
{
user: "nameHere",
pwd: "passwordHere",
roles: [ { role: "root", db: "admin" } ]
}
)

Nếu bạn muốn dán đoạn mã ở trên, trước tiên hãy sao chép đoạn mã đó vào trình chỉnh sửa và điền vào các trường ở đó — sẽ dễ dàng hơn rất nhiều. Ngoài ra, nếu bạn muốn dán nó vào bảng điều khiển Portainer, bạn sẽ phải nhấp chuột phải và chọn dán

Tôi mới học cách sử dụng docker với docker-compose để đơn giản hóa dự án phụ full-stack của mình. Thật dễ dàng để tạo một dự án với docker làm nơi chứa các hình ảnh như MongoDB, Redis, Tìm kiếm đàn hồi, v.v. Bạn chỉ cần pull image khi cần và xóa container sau khi không cần chúng

Những việc cần làm
  1. Kéo hình ảnh MongoDB
  2. Tạo một tệp để bắt đầu cơ sở dữ liệu và người dùng được xác thực
  3. Viết docker-compose tập tin
  4. Đăng nhập vào MongoDB bằng thông tin đăng nhập đã tạo
Kéo hình ảnh MongoDB

kéo hình ảnh MongoDB mới nhất bằng cách thực hiện lệnh bên dưới

$ docker pull mongo:latest

kết quả của docker kéo

Hiển thị hình ảnh đã kéo bằng cách thực hiện $ docker images đảm bảo rằng hình ảnh mongo của bạn ở đó

kết quả của hình ảnh docker Tạo tệp để bắt đầu cơ sở dữ liệu xác thực và người dùng

Tạo một tệp có tên init-mongo.js hoặc bất cứ thứ gì miễn là tệp Javascript

Nội dung của init-mongo. tệp docker-compose jsWrite

Tạo một tệp có tên docker-compose. yml để thiết lập ngăn xếp docker-compose của bạn. Đây là cấu trúc thư mục hiện tại của chúng tôi

cấu trúc thư mục hiện tại

Nội dung docker-compose. ymlGiải thích
  • version là một phiên bản của định dạng tệp soạn thảo docker, bạn có thể thay đổi phiên bản mới nhất
  • database ở dòng 3 chỉ là tên dịch vụ, bạn muốn đổi tên gì cũng được
  • image phải là mongo, vì bạn muốn tạo vùng chứa từ hình ảnh mongo
  • container_name là tên cho vùng chứa của bạn, không bắt buộc
  • $ docker exec -it  bash
    0 là một biến sẽ được sử dụng trên thùng chứa mongo
  • $ docker exec -it  bash
    1 bạn điền tên cơ sở dữ liệu mà bạn muốn tạo, đặt nó giống như init-mongo. js
  • $ docker exec -it  bash
    2 bạn điền tên người dùng của root mà bạn muốn
  • $ docker exec -it  bash
    3 bạn điền mật khẩu của root mà bạn muốn
  • $ docker exec -it  bash
    4 để xác định tệp/thư mục mà bạn muốn sử dụng cho bộ chứa
  • $ docker exec -it  bash
    5 có nghĩa là bạn muốn sao chép init-mongo. js thành
    $ docker exec -it  bash
    6 dưới dạng tệp chỉ đọc.
    $ docker exec -it  bash
    7 là một thư mục đã được tạo bên trong thùng chứa mongo được sử dụng để khởi tạo cơ sở dữ liệu, vì vậy chúng tôi sao chép tập lệnh của mình vào thư mục đó
  • $ docker exec -it  bash
    8 có nghĩa là bạn muốn đặt dữ liệu trên vùng chứa vẫn tồn tại trên thư mục cục bộ của bạn có tên là
    $ docker exec -it  bash
    9.
    $ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
    0 là một thư mục đã được tạo bên trong thùng chứa mongo
  • $ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
    1 là xác định cổng nào bạn muốn hiển thị và xác định, trong trường hợp này tôi sử dụng cổng mongoDB mặc định
    $ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
    2 cho đến khi
    $ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
    3
Chấp hành

Bây giờ hãy chạy tệp docker-compose với

$ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
4 hoặc
$ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
5 để chạy các thùng chứa ở chế độ nền

Mở một thiết bị đầu cuối khác để đăng nhập vào vùng chứa. Nhập

$ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
6 để xem vùng chứa đang chạy của chúng tôi

Đăng nhập vào vùng chứa của bạn bằng cách sử dụng tên vùng chứa

$ docker exec -it  bash

đăng nhập vào container

Đăng nhập vào MongoDB với Người dùng và Cơ sở dữ liệu đã tạo bằng cách sử dụng

$ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 

Đăng nhập vào người dùng MongoDBCuối cùng

Bây giờ bạn đã tạo bộ chứa MongoDB liên tục, người dùng MongoDB, siêu người dùng và cơ sở dữ liệu của bạn. Bạn có thể kết nối chương trình của mình với cơ sở dữ liệu bằng cách sử dụng URL này làm kết nối

$ mongo -u  -p  --authenticationDatabase ### OR ###$ mongo -u  --authenticationDatabase 
7

Làm cách nào để đặt tên người dùng và mật khẩu trong bộ chứa MongoDB?

Thay đổi tên người dùng và mật khẩu nếu bạn muốn. .
Chạy lệnh sau để tải xuống và chạy bộ chứa docker của MongoDB. docker-compose up -d
Kiểm tra thùng chứa. docker ps
Kiểm tra khối lượng. khối lượng docker ls. Sử dụng vỏ mongo với tên người dùng và mật khẩu. .
Cách khác. mongo mongodb. //nguồn gốc. mật khẩu@127. 0. 0. 1. 27017

Làm cách nào để bật xác thực MongoDB với Docker Compose?

Bật xác thực mongodb bằng docker .
Chạy mongodb mà không cần xác thực. Trước tiên, chúng ta cần chạy mongodb mà không bật auth. .
Kết nối với mongodb mà không cần auth. Vì mongodb auth chưa được bật, chúng tôi chỉ có thể kết nối với mongodb như bên dưới. .
Tạo người dùng root. .
Tạo người dùng khác. .
Chạy mongodb với auth. .
Kết nối với mongodb bằng auth

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

Bạn có thể kết nối với MongoDB trên máy chủ cục bộ. 27017 . Sau đó sử dụng lệnh sau để mở trình bao MongoDB. Tôi đã sử dụng mymongo làm tên vùng chứa tùy ý, mặc dù vậy bạn có thể thay thế mymongo bằng test-mongo hoặc bất kỳ tên vùng chứa nào khác mà bạn chọn. Lệnh show dbs sẽ hiển thị tất cả các cơ sở dữ liệu hiện có của bạn.

Làm cách nào để tạo người dùng cho MongoDB trong bộ chứa Docker?

Tạo bộ chứa MongoDB với người dùng được chỉ định. Tạo một bộ chứa Docker MongoDB duy nhất với tên người dùng application_user, mật khẩu application_pass cho application_database (đặc quyền quản trị) .