2015-01-05 4 views
12

MongoDBから始まり、dbsへのアクセス権をユーザーに渡したいと思います。私がやった まず最初に作成し、管理者ユーザーおよび認証の有効化とMongoDBの起動することでした、これは私の作成したユーザーです。その後エラー:ユーザーを追加できませんでした:コマンドを実行するためにテストで承認されていません。{createUser:

db.getUser("admin") 
{ 
     "_id" : "admin.admin", 
     "user" : "admin", 
     "db" : "admin", 
     "roles" : [ 
       { 
         "role" : "dbAdminAnyDatabase", 
         "db" : "admin" 
       }, 
       { 
         "role" : "clusterAdmin", 
         "db" : "admin" 
       } 
     ] } 
} 

、私は次のコマンドを使用してユーザーを作成しよう:

use newdb 
db.createUser(
    { 
    user: "newuser", 
    pwd: "12345678", 
    roles: [ { role: "readWrite", db: "newdb" } ] 
    } 
) 

しかし、私はこのエラーを得た:

Error: couldn't add user: not authorized on newdb to execute command { createUser: "newuser", pwd: "xxx", roles: [ { role: "readWrite", db: "newdb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004

を、私はそれについてGoogleで検索しましたが、2つだけの結果、中国と関連する他ないの一つがありますので、私は少し迷ってしまいました。何か案が ?事前に

$mongo --port 27017 -u adminUser -p adminPass --authenticationDatabase admin 

ありがとう:それは私の管理ユーザーが権限を持っていないように、私は次のコマンドでのMongoDBへのアクセスになります。

+1

adminユーザに 'userAdmin' /' userAdminAnyDatabase'ロールを含めていませんでした。 'dbAdminAnyDatabase'と' clusterAdmin'はユーザ管理権限を持ちません。 – wdberkeley

+0

それが問題でした。まあ、それはmongodbとの私の最初の遭遇だった:)ありがとう! – brb

答えて

4

以下のコマンドでは、管理ユーザーとパスワードを作成しました。

db.getUser("admin")  
{  
     "_id" : "admin.admin", 
     "user" : "admin",  
     "db" : "admin",  
     "roles" : [  
       {  
         "role" : "dbAdminAnyDatabase",  
         "db" : "admin"  
       },  
       {  
         "role" : "clusterAdmin",  
         "db" : "admin"  
       }  
     ] }  
}  

あなたは管理者のユーザー名とパスワードを作成すると、モンゴはあなたが以前にログインするために使用される通常の管理者ユーザとして任意のスキーマの更新を行うことができません。

新しく作成した管理者のユーザーとパスワードを使用して、新しいユーザーを作成するか、更新を行います。それは動作するはずです。

0

現在のmongodプロセスを終了し、パラメータ計測器--authなしで再起動する必要があります。ターミナルタイプに

:のmongodのプロセスが起動後、あなたはモンゴシェルコマンドを実行するために、新しいターミナルタブを開くことができ

をのmongod:

mongo --shell 
use new_your_database 
db.createUser(
    { 
    user: "mongo_admin", 
    pwd: "mongo_admin", 
    roles: [ "readWrite", "dbAdmin" ] 
    } 
) 

が正常に行われる必要があります....

5

停止のmongod mongod --config /usr/local/etc/mongod.conf --auth

の実行中のインスタンスは、その後なしで起動その後、自分の役割

db.updateUser("admin",{roles : ["userAdminAnyDatabase","userAdmin","readWrite","dbAdmin","clusterAdmin","readWriteAnyDatabase","dbAdminAnyDatabase"]});

likeを更新mongod --config /usr/local/etc/mongod.conf

のように今、再び--authでのmongod起動してみてください。


アイデアは、あなたが上記のすべての役割を持つ「管理者」データベースの下にユーザーを作成する必要があります。

しかし、このユーザーは他のデータベースの一部ではありません。あなたが管理者ユーザ、

を作成したら、それでは、その管理者ユーザーとして

SERVER: mongod --config /usr/local/etc/mongod.conf --auth

CLIENT: ./mongodb/bin/mongo localhost:27017/admin -u adminUser -p 123456

use APPLICATION_DB 

ログイン再びこのAPPLICATION_DB用の新しいユーザー(たとえばAPP_USER)を作成します。今回は、このアプリケーションのユーザーは "dbOwner"ロールだけが必要です。

db.createUser({user:"test", pwd:"test", roles:['dbOwner']}) 

ここでは、このAPP_USERとAPP_DBを使用する必要があります。

関連する問題