MongoDB 인증모드로 접속하기

MongoDB에 인증모드로 접속하는데 방법은 다양합니다.  먼저 리눅스 커멘드 창에서 접속하는 방법부터 보겠습니다.

1. 접속 후 username과 password를 입력

mongo
use admin
db.auth( "<username>", "<password>" );

mongo 를 입력해서 MongoDB 콘솔로 접속한 다음 사용할 DB를 입력한 후(위의 경우 admin) db.auth에 username과 password를 입력하는 방법입니다.  성공하면 심플하게 “1” 이 반환되고 실패하면 인증에 실패했다는 에러메시지가 반환됩니다.

2. 콘솔 접속시 DB명과 username, password를 입력

mongo <dbname> -u <username> -p <password>

콘솔 접속과 동시에 로그인 하는 방법입니다. -u와 -p뒤에 나오는 username과 password는 붙여주셔도 되고 띄어쓰기를 해도 상관없습니다. 성공하면 역시 심플하게 connecting to : 이 뜨면서 로그인 됩니다. 실패하면 로그인에 실패했다는 에러메시지가 반환됩니다.

3. PHP에서 접속하기

PHP 상에서 MySql DB에 접속할 때 username 과 password를 전송하는 것과 마찬가지로 MongoDB에서도 인증모드가 true 일때는 인증을 해주지 않으면 가차없이 에러를 반환합니다.

PHP Mongo Driver가 업데이트 되면서 authenticate() 함수가 삭제되었다고 합니다. authenticate() 함수로도 일단 인증이 작동은 하지만 Codeigniter에서 돌릴경우 Function MongoDB::authenticate() is deprecated 라는 에러를 출력합니다. 새로운 인증방법은 객체를 생성할때 Database Host, username, password를 함께 입력합니다.

<?php
    $mongodb = new Mongo( "mongodb://username:password@localhost:port/dbname" );

하지만 이 소스만으로는 접속 실패(username이나 password 틀림 등)시 fatal error를 뱉어냅니다. 따라서 예외처리를 함께 해주는 것이 좋습니다.

<?php
    try {
        $mongodb = new Mongo( "mongodb://username:password@localhost:port/dbname" );
    }
    catch( mongoConnectionException $e ) {
        die( "Mongo DB Connection Error : ".$e->getMessage() );
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>