Với mục đích muốn tạo một cơ sở dữ liệu MongoDB trong một nhiệm vụ Capistrano, tôi cần tìm ra cách tạo cơ sở dữ liệu mới thông qua trình bao MongoDB khi MongoDB đang chạy với auth được bật.Làm thế nào để tạo một MongoDB mới từ dòng lệnh được bật auth?
Với auth bật vỏ MongoDB không thể làm bất cứ điều gì mà không xác thực đầu tiên, nhưng xác thực đã xảy ra trong khi sử dụng cơ sở dữ liệu admin theo như tôi biết. Vì vậy, tôi đã kết nối với nó để bắt đầu như:
sudo -u mongodb mongo admin --eval "db.auth(username, password)"
Và điều đó xác thực tôi để thực hiện thêm nhưng ... tại thời điểm đó tôi cần tạo cơ sở dữ liệu và người dùng cho nó trong cùng phiên trình vỏ . Tuy nhiên, tôi không thể:
sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database"
Vì không thể sử dụng use database
trong eval. Vì vậy, tôi đã cố gắng thay vì:
sudo -u mongodb mongo admin --eval "db.auth(username, password);db = connect('localhost:27017/new_database')"
Và đó thực sự sẽ làm cho tôi một thể hiện của cơ sở dữ liệu mới, tôi muốn tạo nhưng nếu tôi cố gắng:
sudo -u mongodb mongo admin --eval "db.auth(username, password);connect('localhost:27017/new_database').addUser(new_user, new_password)"
tôi nhận được một lỗi xác thực, vì vậy rõ ràng sử dụng lệnh connect()
để quên rằng tôi đã xác thực trước đó.
Vì vậy, đây là nơi tôi bị kẹt, cố gắng tạo cơ sở dữ liệu trong một dòng với MongoDB bằng cách sử dụng auth và người dùng quản trị viên.
Bất kỳ đề xuất nào về cách tôi có thể thực hiện việc này?
Làm việc hoàn hảo, cảm ơn! – rjoll
http://docs.mongodb.org/manual/reference/method/db.getSiblingDB/ – kschaper
@kschaper: Cảm ơn, sửa chữa liên kết tài liệu (từ liên kết wiki cũ). – Stennie