如何连接到mongodb副本集并通过php脚本进行身份验证?

时间:2013-12-25 08:06:00

标签: php mongodb

我使用以下php脚本连接到mongodb副本集:

$conn = new MongoClient("mongodb://mongodb1:27017,mongodb2:27017/?replicaSet=MyRepSet");

$db = $conn->test;
$collection = $db->items;

$item = array(
    'name' => 'milk',
    'quantity' => 10,
    'price' => 2.50,
    'note' => 'skimmed and extra tasty'
  );

  $collection->insert($item);

 $conn->close();

当我在没有--auth和--key

的情况下启动mongodb时,这是有效的

然而,当我用--auth和--key启动mongodb副本集并创建一个用户时,就像这样:

> use test;
> db.addUser("test","123456")

当我再次尝试上面的php脚本时,我收到了这个错误:

Uncaught exception 'MongoCursorException' with message 'mongodb3:27017: not authorized for insert on test.items

如何通过php脚本连接到mongodb副本集并进行身份验证?

2 个答案:

答案 0 :(得分:3)

试试这个

$connection = new Mongo("mongodb://test:123456@127.0.0.1:27017/mongodb1/?replicaSet=MyRepSet");

或者如果这不起作用,请尝试

$conn = new MongoClient("mongodb://test:123456@mongodb1:27017,mongodb2:27017/?replicaSet=MyRepSet");

答案 1 :(得分:0)

根据您的提示,我尝试以下操作:

mongodb1和mongodb2上的

use admin;
db.addUser("admin","123456");

编辑php连接脚本:

$conn = new MongoClient("mongodb://admin:123456@mongodb1:27017,mongodb2:27017/?replicaSet=MyRepSet");

它有效!!!!非常感谢