我是MongoDB的新手。我 2 个月前开始使用它。我决定测试一个网站的日志(用户行为)。起初没有用户名和密码。它就像一个魅力。我使用RockMongo进行管理。然后我创建了用户名和密码并重新启动了服务器。重新启动后,我的脚本无法将数据放入数据库。但是,当我更新RockMongo的设置时,它很烦人,我可以通过RockMongo插入/更新。我在 Ubuntu 10 上使用 MongoDB,并带有 PHP5。我的代码看起来像 这:
$m = new Mongo();
$db = $m->testlogs;
$db->authenticate('username', 'password');
我也不能使用外壳。尝试进行身份验证时,我得到 以下错误:
"$err" : "未经授权的 db:testlogs 锁定类型:-1 客户端:127.0.0.1", "代码" : 10057
任何帮助,不胜感激。
您需要先连接到特定的数据库。仅访问$m->测试日志并不能做到这一点。相反,您需要使用作为第一行:
$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() 优先于此方法。如果您进行身份验证 连接时,连接断开并重新连接 会话中,您将重新进行身份验证。如果您手动进行身份验证 使用此方法并且连接断开,您必须调用 重新连接后再次执行方法。