環境は Windows 7 + PHP 5.3系 + MongoDB 1.8.5。
http://www.mongodb.org/downloads から Windows 64-bit ver1.8.5 をダウンロード。
解凍してできたディレクトリを mongodb にリネームして C:\mongodb に配置。
データディレクトリを C:\mongodb\data に作成。
コマンドプロンプとから以下実行で起動。終わり。
C:\mongodb\bin\mongod.exe --dbpath C:\mongodb\data
別コマンドプロンプトから以下実行して接続。
> C:\mongodb\bin\mongo.exe MongoDB shell version: 1.8.5 connecting to: test >
試しにデータを登録してみる。大丈夫そう。
> db.test.save( {a:1} ) > db.test.find() { "_id" : ObjectId("50ea4dc0178846492bdb8b43"), "a" : 1 }
https://github.com/mongodb/mongo-php-driver/downloads から DLL をダウンロード、php.ini に「extension=php_mongo.dll」を追加。
まず mongoDB に データベースと認証用ユーザ作っておく。データベース名は mgng、ユーザ名は dbuser、パスワードは password。以下コマンドラインから実行。
> C:\mongodb\bin\mongo.exe MongoDB shell version: 1.8.5 connecting to: test > use mgng switched to db mgng > db.addUser("dbuser","password") { "user" : "dbuser", "readOnly" : false, "pwd" : "031cdfcc530b919b7f77efb400f250b7" } > quit()
PHP側はこういうコード。username や password に「@」「:」が含まれた場合のことを考えて、$options で渡すようにしとく。
接続成功すると以下みたいな表示が、
Array ( [0] => Array ( [hash] => 127.0.0.1:27017;-;mgng/dbuser/9908c9f0881e9b0b2afbf673040eb9c1;5664 [server] => Array ( [host] => 127.0.0.1 [port] => 27017 [database] => mgng [username] => dbuser [auth_hash] => 9908c9f0881e9b0b2afbf673040eb9c1 [pid] => 5664 ) [connection] => Array ( [last_ping] => 1357537085 [last_ismaster] => 0 [ping_ms] => 0 [connection_type] => 1 [connection_type_desc] => STANDALONE [max_bson_size] => 16777216 [tag_count] => 0 [tags] => Array ( ) ) ) )
接続失敗すると(例えばパスワードが違う場合)以下が表示される。
Failed to connect to: 127.0.0.1:27017: Authentication failed on database 'mgng' with username 'dbuser': auth fails
これから MySQL → MongoDB への移行を考える。