-1

mongoDB に承認を追加しようとしています。

私はmongodb 2.2.4、php-mongo 1.4.1安定版、apache2、php 5.4、ZendFramework 1.12 + ShantyMongoを使用しています

また、3 つのインスタンスでレプリカセットを使用します。

auth = true mongo create admin データベースを設定し、このデータベースにユーザーを追加すると、次のエラーが発生しました。

Fatal error: Uncaught exception 'MongoCursorException' with message 'test.server.com:27017: unauthorized db:database_test ns:database_test.options lock type:0 client:127.0.0.1' in /apps/test_app/libs/Shanty/Mongo/Collection.php:3501

ユーザーを database_test に追加すると、すべて正常に動作します。

<?php

/* Configure logging */
MongoLog::setModule( MongoLog::ALL );
MongoLog::setLevel( MongoLog::ALL );

$m = new MongoClient(); // connect
$db = $m->selectDB("database_test");
$db->authenticate('admin','12345');

admin と database_test の両方にユーザーを追加しても、このコードは正常に機能します。

誰かが同様の問題を抱えていて、私が何をする必要があるかを知っているかもしれません。

4

2 に答える 2

1

まず、認証を指定するには、次の構文を使用する必要があります。

<?php
$m = new MongoClient("mongodb://admin:12345@localhost/database_test");
$db = $m->database_test;

ただし、「このデータベースにユーザーを追加するとき」は実際には説明的ではないため、質問に答えるのは少し難しいです。適切な答えを得るには、これを行うために使用した正確な手順またはコードをリストすることを学ぶ必要があります.

通常のデータベース ( ) に対して認証しようとしていたと思いますが、データベースdatabase_testにはユーザー/パスのみが設定されていadminます。その場合、adminデータベースに認証してから、次を選択する必要がありますdatabase_test

<?php
$m = new MongoClient("mongodb://admin:12345@localhost/admin");
$db = $m->database_test;
于 2013-08-05T10:37:47.893 に答える
0

あなたの答えをありがとう、私はこれを理解しました。将来、誰かにとって役立つかもしれません.Shanty-Mongoは、サーバーの配列でユーザー名、パスワード、およびポートを必要とします. 次のようになります。

; Shanty Mongo Config
hosts.0.host = '127.0.0.1'
hosts.0.port = '27017'
hosts.0.username = 'root'
hosts.0.password = 'pass'
hosts.1.host = '127.0.0.1'
hosts.1.port = '27018'
hosts.1.username = 'root'
hosts.1.password = 'pass'
hosts.2.host = '127.0.0.1'
hosts.2.port = '27019'
hosts.2.username = 'root'
hosts.2.password = 'pass'
database = 'database_test'
replicaSet = true

また、私がしていること:mongoで:1.構成ファイルを編集し、認証を有効にします(auth = true)2.管理データベースにユーザーを作成します3.新しいユーザーとして接続します4.ZF構成のターゲットデータベースにユーザーを作成します構成ファイルを更新します。上で説明します。

また、エラーが発生することもあります: Fatal error: php_network_getaddresses, DNS または php でアドレスを解決しようとして問題が発生したためだと思います: mongo://root:pass@127.0.0.1:27017,root:pass@127.0.0.1: 27018、ルート:pass@127.0.0.1:27019/database_test

于 2013-08-05T17:52:26.760 に答える