1

我是 MongoDB 的新手。我2个月前开始使用它。我决定测试一个网站的日志(用户行为)。起初没有用户名和密码。它就像一个魅力。我使用 RockMongo 进行管理。然后我创建了用户名和密码并重新启动了服务器。重新启动后,我的脚本无法将数据放入数据库。但是,当我更新 RockMongo 的设置时,它会出现问题,我可以通过 RockMongo 插入/更新。我在带有 PHP5 的 Ubuntu 10 上使用 MongoDB。我的代码如下所示:

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

我也不能使用外壳。尝试进行身份验证时出现以下错误:

“$err”:“未经授权的数据库: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 回答