我只是简单地尝试连接到mongo并运行一个简单的读取查询,但没有成功。
我正在使用:
- Mongo 3.0.3
- PHP 5.6.9
- Ubuntu Linux服务器操作系统
我在上有服务器
- AWS Ubuntu web服务器
- Google Cloud Mongo副本集集群(5个盒子,1个仲裁器)
我使用的示例来自:
PHP副本集:http://php.net/manual/en/mongo.connecting.rs.php
PHP身份验证:http://php.net/manual/en/mongo.connecting.auth.php
这是代码:
$this->mongooe = new MongoClient('mongodb://mongo-1.mongo.example.com:27017,
mongo-2.mongo.example.com:27017,
mongo-3.mongo.example.com:27017,
mongo-4.mongo.example.com:27017,
mongo-5.mongo.example.com:27017',
[
'replicaSet'=> 'exampleSet',
'db' => 'example',
'username' => 'example-admin',
'password' =>'123456'
]);
我在日志中得到这个错误:
[Mon Nov 23 17:56:23.864370 2015] [:error] [pid 2480] [client 192.168.56.1:61512] [2015-11-23 17:56:23] .ERROR: mongo-1.mongo.example.com:27017: not authorized for query on example.history {"exception":"[object] (MongoCursorException(code: 13): mongo-1.mongo.example.com:27017: not authorized for query on example.history at /media/sf_api_admin/app/Controller/V1/Example/Config.php:66)"} [], referer: http://localhost:8042/example/configs
尽管我已经尝试了8种不同的语法配置,比如这个:
$this->mongooe = new MongoClient('mongodb://example-admin:123456@mongo-1.mongo.example.com:27017,
example-admin:123456@mongo-2.mongo.example.com:27017,
example-admin:123456@mongo-3.mongo.example.com:27017,
example-admin:123456@mongo-4.mongo.example.com:27017,
example-admin:123456@mongo-5.mongo.example.com:27017',
[
'replicaSet'=> 'exampleSet',
'db' => 'example'
]);
我也得到这个错误:No candidate servers found
我的示例管理员有以下角色:
- 数据库管理员
- 数据库所有者
- 读取
- 读写
- userAdmin
(基本上完全访问,仅用于测试)
我真的错过了什么愚蠢的东西,有人帮我吗?
谢谢,
这是一个简单的解决方案。
这样做:
sudo apt-get install pkg-config libssl-dev
sudo pecl install mongodb-1.2.0alpha3
不要忘记在php.ini文件中包含mongodb.so。
对于这个新版本的mongo,您需要使用构建的alpha版本。