2016-05-18 2 views
0

Я пытаюсь создать простой MongoDB и вставить некоторые данные. Я должен использовать PHP, и я запускаю код на внешнем сервере, принадлежащем моей унифицированности (для меня обязательно, на сервере все настроено). Моя проблема в том, что я использую код из учебника и все отлично работает, пока не достигнет «$list = $db->listCollections();». Затем я получаю следующий журнал:PHP Неустранимая ошибка, MongoDB, курсор

PHP Фатальная ошибка: Uncaught исключение «MongoCursorException» с сообщением «локальный: 27017: не авторизованы для запроса на Test.mycol

Моя проблема заключается в том, что я не знаю, почему это происходит и как его решить. Какие-либо предложения?

код:

<?php 
    // connect to mongodb 
    # $m = new MongoClient(); 
    $mongo = new Mongo(); 
    $db = $mongo->Test; 
    $username="4rebacz"; 
    $password="pass"; 
    $db->authenticate($username, $password); 
    echo "Connection to database successfully"; 

    // select a database 
    # $db = $m->mydb; 
    echo "Database mydb selected"; 
    $collection = $db->mycol; 
    echo "Collection selected succsessfully"; 

    $document = array( 
     "title" => "MongoDB", 
     "description" => "database", 
     "likes" => 100, 
     "url" => "http://www.tutorialspoint.com/mongodb/", 
     "by", "tutorials point" 
    ); 

    $collection->insert($document); 
    echo "Document inserted successfully"; 
    $cursor = $collection->find(); 

    $str = file_get_contents('dirdata/formdata.txt'); 
    $json = json_decode($str, true); 
    foreach($json as $id => $item) 
    { 
    $collection->insert($item); 
    } 

    $list = $db->listCollections(); 
    foreach($list as $collection) 
    { 
    echo "$collection \n"; 
    } 
?> 

ответ

0

listCollections - требуется администрация роль Read there

Every database includes the following database administration roles:

dbAdmin Provides the following actions on the database’s system.indexes, system.namespaces, and system.profile collections:

  • collStats
  • dbHash
  • dbStats
  • find
  • killCursors
  • listIndexes
  • listCollections
  • dropCollection and createCollection on system.profile only
+0

ОК, может у меня есть еще один вопрос? Как я могу показать все записи в БД без использования ролей администрирования? –

+0

Вы должны хотя бы знать имена всех коллекций. И текущий пользователь должен иметь права на этот сбор ... –

+0

в противном случае используйте пользователя «admin» или добавьте права для своего пользователя –

Смежные вопросы