2017-03-16 5 views
2

Mongoでは、データベースを作成し、そのデータベース専用のユーザーを作成しました。私は「ショーのユーザー」と入力すると、私はこの取得:MongoDBユーザーに承認されていない

rs0:PRIMARY> show users; 
    { 
     "_id" : "sampleuser.sampleuser", 
     "user" : "sampleuser", 
     "db" : "sampledb", 
     "roles" : [ 
      { 
       "role" : "readWrite", 
       "db" : "sampledb" 
      }, 
      { 
       "role" : "dbAdmin", 
       "db" : "sampledb" 
      } 


] 
} 

をしかし、私はそのユーザにコマンドを実行しようとすると、私は次を得る:

not authorized on sampledb to execute command { find: "social_posts", filter: { customer_id: "123", 0: { posted: { $ne: 1 } } } } 

は、どのようなアクセス権の設定が間違っていますか?

+0

コマンドを実行する前に、どのようにユーザー権限を与えていますか? – Veeram

+0

それはmongoドライバを使ってphp経由で実行されているので、私はそれをやっていたと仮定しています –

+0

phpからmongo接続を作成するときにユーザーの資格情報を渡したと思います。あなたのURLは、接続を作成するときにユーザー名とパスワードを持っていますか? http://php.net/manual/en/mongo.connecting.auth.php – Veeram

答えて

0

クエリを実行する前にデータベースに認証するには、db.auth()を使用する必要があります。 db.auth() DOC

db.auth()

から

は、ユーザがシェル内からデータベースに認証することができます。

db.auth()メソッドは、受け入れることができます:

  1. ユーザ名とパスワードを入力します。

    db.auth(<username>, <password>) 
    
  2. 、必要に応じてユーザー名とパスワード、および、認証機構とダイジェストパスワードフラグが含まれているユーザドキュメント。

    db.auth({ 
    user: <username>, 
    pwd: <password>, 
    mechanism: <authentication mechanism>, 
    digestPassword: <boolean> 
    } 
    

戻り値:操作が成功した場合 db.auth()は、認証が成功しなかった場合に0を返し、1。

関連する問題