Làm cách nào tôi có thể nhập Mongo dưới dạng siêu người dùng hoặc đặt lại người dùng?


29

Tôi đang chơi xung quanh với các quyền và tự khóa mình khỏi cơ sở dữ liệu Mongo. Tôi khá chắc chắn rằng tôi đã làm điều này bằng cách cố gắng thêm quyền truy cập vào cơ sở dữ liệu nhưng thay vào đó tôi ghi đè chỉ cho phép cơ sở dữ liệu. Vì vậy, tôi thực sự bị khóa khỏi cơ sở dữ liệu Mongo của mình và mọi thứ tôi đọc đều cho tôi biết cách tạo siêu người dùng nếu tôi có thêm đặc quyền người dùng. Ngay bây giờ tôi không nghĩ rằng tôi có bất kỳ người dùng nào có đặc quyền đó. Có cách nào để vào cơ sở dữ liệu như tất cả quyền truy cập không? Tôi sở hữu máy chủ và có quyền truy cập root.

Câu trả lời:


38

Nếu bạn đã tự khóa mình thì bạn cần phải làm như sau:

  1. Dừng phiên bản MongoDB của bạn
  2. Xóa các tùy chọn --auth và / hoặc --keyfile khỏi cấu hình MongoDB của bạn để tắt xác thực
  3. Bắt đầu cá thể mà không cần xác thực
  4. Chỉnh sửa người dùng khi cần
  5. Khởi động lại cá thể với xác thực được kích hoạt

Xóa auth thực sự không đủ, cảm ơn!
Andrei

14

Tôi gặp vấn đề tương tự khi tôi tạo người dùng mà không cần thêm siêu người dùng trước. Các bước sau đây đã giúp giải quyết vấn đề:

  1. Mở tệp cấu hình MongoDB bằng cách sử dụng sudo( sudo vi mongodb.conf).
    Các tập tin có thể được tìm thấy trong /etc/thư mục.
  2. Nhận xét "auth = true".
  3. Dừng dịch vụ MongoDB ( sudo service mongod stop)
  4. Bắt đầu dịch vụ MongoDB ( sudo service mongod start)
  5. Sau đó tạo siêu người dùng "root" bằng lệnh dưới đây:

    use admin
    
    db.createUser({user:"admin",pwd:"password",roles:[{role:"root",db:"admin"}]});
    

    Để tham khảo https://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. Quay trở lại và không quan tâm "auth=true". Dừng và bắt đầu / Khởi động lại dịch vụ mongodb.


Tôi không thể cảm ơn đủ. Tôi đã bị mắc kẹt khi cố gắng tìm hiểu điều này khi tôi tải dự án lên máy chủ dev. Cảm ơn bạn rất nhiều! :)
Woppi

Như trên. Thông báo lỗi máy chủ một cách ngoạn mục không có ích về điều này. Cảm ơn bạn!
Tom

7

Nếu bạn sử dụng một bộ bản sao với mộtkeyfile

Bảo mật giữa các thành viên của bộ bản sao bằng Xác thực nội bộ

Keyfile được sử dụng để sao chép auth.

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

Bạn có thể sử dụng lệnh này để đăng nhập với tư cách quản trị viên để mongod:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

Afterword bạn có thể tạo hoặc sửa đổi người dùng quản trị của bạn.

Vai trò nội bộ

__systemMongoDB gán vai trò này cho các đối tượng người dùng đại diện cho các thành viên cụm, chẳng hạn như các thành viên thiết lập bản sao và các thể hiện mongos. Vai trò cho phép chủ sở hữu của nó thực hiện bất kỳ hành động chống lại bất kỳ đối tượng nào trong cơ sở dữ liệu.

Không chỉ định vai trò này cho các đối tượng người dùng đại diện cho các ứng dụng hoặc quản trị viên con người, ngoài các trường hợp đặc biệt.


Bạn đã tìm thấy thông tin này ở đâu?
bát diện

2

Kiểm tra câu trả lời cho câu hỏi này, họ có thể giúp

https://stackoverflow.com/questions/20117104/mongodb-root-user

Về cơ bản nếu bạn vẫn có quyền truy cập vào máy chủ, bạn có thể truy cập Admincơ sở dữ liệu.

Có nhiều hơn trong trang này http://docs.mongodb.org/v2.4/reference/user-priv đặc biệt /

Lưu ý rằng phiên bản 2.6 thay đổi cách thức hoạt động hoàn toàn. Đối với 2.6 bạn sẽ cần dành nhiều thời gian hơn với http://docs.mongodb.org/manual/security/


1
Như đã đề cập trong bài đăng, đó là thông tin duy nhất tôi có thể tìm thấy. Tôi không có quyền để làm điều đó
Tony

0

Bạn phải dừng Mongo, xóa các tệp quản trị, sau đó khởi động Mongo

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
Điều này đang phá hủy cơ sở dữ liệu người dùng quản trị và cho phép truy cập thông qua "localhostExcetption", đây không phải là cách tốt để quản trị người dùng khi bạn gặp sự cố.
daveh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.