1

私はMongoDBが初めてです。2ヶ月前から使い始めました。1 つの Web サイト (ユーザーの行動) のログをテストすることにしました。最初はユーザー名とパスワードなし。そして、それは魅力のように機能しました。管理者には RockMongo を使用しています。次に、ユーザー名とパスワードを作成し、サーバーを再起動しました。再起動後、スクリプトはデータベースにデータを配置できませんでした。ただし、RockMongo の設定を更新すると、動作し、RockMongo 経由で挿入/更新できます。PHP5を搭載したUbuntu 10でMongoDBを使用しています。私のコードは次のようになります。

    $m = new Mongo();
    $db = $m->testlogs;
    $db->authenticate('username', 'password');

シェルも使えません。認証しようとすると、次のエラーが発生します。

"$err": "無許可の db:testlogs ロック タイプ:-1 クライアント:127.0.0.1"、"コード": 10057

どんな助けでも大歓迎です。

4

1 に答える 1

7

最初に特定のデータベースに接続する必要があります。$m->testlogs にアクセスするだけでは、それはできません。代わりに、最初の行として使用する必要があります。

$m = new Mongo('mongodb://localhost/testlogs');

オプションで、次のことができます。

$m = new Mongo('mongodb://username:password@localhost/testlogs');

->authenticate() 呼び出しをドロップできます。http://php.net/manual/en/mongodb.authenticate.phpのドキュメントに も次のように書かれています。

一般に、このメソッドよりも Mongo::__construct() に組み込まれている認証を使用する必要があります。接続時に認証し、セッション中に接続が切断されて再接続されると、再認証されます。このメソッドを使用して手動で認証し、接続が切断された場合は、再接続後にこのメソッドを再度呼び出す必要があります。

于 2012-04-22T16:01:28.897 に答える