php - MongoDB PHP 认证

标签 php authentication mongodb

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

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

我也不能使用 shell。尝试进行身份验证时,我得到了 以下错误:

“$err”:“未经授权的 db:teSTLogs 锁类型:-1 客户端:127.0.0.1”, “代码”:10057

感谢任何帮助。

最佳答案

您需要先连接到特定的数据库。仅仅访问 $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 处的文档 还说:

In general, you should use the authenticate built into Mongo::__construct() in preference to this method. If you authenticate on connection and the connection drops and reconnects during your session, you'll be reauthenticated. If you manually authenticated using this method and the connection drops, you'll have to call this method again once you're reconnected.

关于php - MongoDB PHP 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267634/

相关文章:

javascript - Angularjs PHP $http 并用数据填充 Controller 中的 $scope

azure - 如何在 azure 广告(客户 API)中请求具有范围的访问 token

node.js - MongoDb 与 Node js 的连接

node.js - 副本集群的 AWS MongoDB 入站规则

php - MySQL php 连接失败

php - 建议SQL查询

PHP 速度 : what is faster? if (isset ($foo)) OR if ($foo==true)

php - 用于跨域身份验证的 JWT token

php - node.js hmac.digest() 输出似乎有误

node.js - Mongoose 更新查询继续以 upsert true 插入数据,而无需更新和仅添加 1 个字段