說明: 前面建立了test1用戶,test1用戶對db1庫讀寫,對db2只讀. 之因此先建立db1庫,表示用戶在db1庫中建立,就必定要db1庫驗證身份,即用戶的信息跟隨數據庫. 好比test1用戶雖然有db2庫的讀取權限,可是必定要先在db1庫進行身份驗證,直接訪問會提示驗證失敗.php
登陸: [root@root-01 ~]# mongo --host 192.168.2.115 --port 27017 -u admin -p "admin122" --authenticationDatabase "admin" MongoDB shell version v3.4.9 connecting to: mongodb://192.168.2.115:27017/ MongoDB server version: 3.4.9 Server has startup warnings: 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-10-20T09:35:56.569+0800 I CONTROL [initandlisten] 進入db1庫: > use db1 switched to db db1 對db1庫進行身份驗證: > db.auth('test1','123aaa') 1 建立mycol集合: > db.createCollection("mycol",{ capped:true,autoIndexID:true,size:6142800,max:10000}) { "ok" : 0, "errmsg" : "The field 'autoIndexID' is not a valid collection option. Options: { capped: true, autoIndexID: true, size: 6142800.0, max: 10000.0 }", "code" : 72, "codeName" : "InvalidOptions" } 說明:建立集合失敗,顯示"ok" : 0, "errmsg"-->錯誤信息是'autoIndexID' 這個參數是不合適的. 把autoIndexID:true 這個參數去掉,從新建立: > db.createCollection("mycol",{ capped:true,size:6142800,max:10000}) { "ok" : 1 } 注:mycol-->是集合的名字 capped true/ capped false (可選)--> 若是爲true,則啓用封頂集合,封頂集合是固定大小的集合,當它達到其最大大小,會自動覆蓋最先的條目; 若是爲true,則須要指定尺寸參數. autoindexID true或false (可選) --> 若是爲true,自動建立索引_id字段的默認值是false. size (可選) -->指定最大大小字節封頂集合,若是封頂是true,那麼還須要指定這個字段,單位B max (可選) --> 指定封頂集合容許在文件的最大數量.
> show tables mycol > show collections mycol
說明: 當Account集合不存,在給Account集合插入數據時,會自動建立Account這個集合. html
給Account集合插入2條數據: > db.Account.insert({AccountID:1,UserName:"ree",password:"123456"}) WriteResult({ "nInserted" : 1 }) > db.Account.insert({AccountID:2,UserName:"tina",password:"123456"}) WriteResult({ "nInserted" : 1 }) 查看集合: > show tables Account mycol AccountID:1 -->表示第1條數據
說明:指定集合Account,AccountID:1(第1條數據),新增長一個字段Age,值是20mysql
> db.Account.update({AccountID:1},{"$set":{"Age":20}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.Account.find() { "_id" : ObjectId("59e960e740ba4b17e304ca91"), "AccountID" : 1, "UserName" : "ree", "password" : "123456", "Age" : 20 } { "_id" : ObjectId("59e9624d40ba4b17e304ca92"), "AccountID" : 2, "UserName" : "tina", "password" : "123456" }
說明:能夠指定集合的IDgit
> db.Account.find({AccountID:1}) { "_id" : ObjectId("59e960e740ba4b17e304ca91"), "AccountID" : 1, "UserName" : "ree", "password" : "123456", "Age" : 20 }
刪除AccountID:1的數據: > db.Account.remove({AccountID:1}) WriteResult({ "nRemoved" : 1 }) 查看看集合全部文檔(只有一條數據): > db.Account.find() { "_id" : ObjectId("59e9624d40ba4b17e304ca92"), "AccountID" : 2, "UserName" : "tina", "password" : "123456" }
刪除集合: > db.Account.drop() true > db.mycol.drop() true 查看集合,就沒有集合了: > show tables
建立col2集合: > db.col2.insert({AccountID:1,UserName:"tina",password:"123456"}) WriteResult({ "nInserted" : 1 }) 查看集合的狀態: > db.printCollectionStats() col2 { "ns" : "db1.col2", "size" : 81, "count" : 1, "avgObjSize" : 81, "storageSize" : 4096, "capped" : false, "wiredTiger" : { "metadata" : { "formatVersion" : 1 }, .............................. .............................. 後面信息太長,不做演示
說明: 在工做中頗有可能使用的是PHP的代碼,PHP去鏈接MongoDB, 要想PHP去鏈接MongoDB
都須要安裝MongoDB的擴展.github
在PHP的官網有個問題,有兩個擴展,一個是MongoDB.so,另外一個是Mongo.so,Mongo.so的話
比較老的擴展,但仍有一個PHP程序寫的代碼有Mongo.so,因此這兩個擴展都須要瞭解.
如下是官方的解釋:
MongoDB.so :
目前維護的驅動程序是PECL提供的mongodb擴展。這個驅動程序能夠獨立使用,雖然它是很是裸體的。您應該考慮使用帶有免費PHP庫的驅動程序,該庫可在裸機驅動程序之上實現更全功能的API。有關此架構的更多信息能夠在PHP.net文檔中找到。redis
Mongo.so:
mongo擴展是針對的PHP 5.x的舊版驅動程序。該mongo
擴展再也不保持,新的項目建議使用mongodb
擴展和PHP庫。社區開發的Mongo PHP適配器項目mongo
使用新的mongodb
擴展和PHP庫來實現舊 擴展的API ,這對於但願遷移現有應用程序的用戶來講多是有用的。sql
[root@root-01 ~]# cd /usr/local/src 下載MongoDB源碼包: [root@root-01 src]# wget https://pecl.php.net/get/mongodb-1.3.0.tgz 解壓: [root@root-01 src]# tar -zxvf mongodb-1.3.0.tgz 進入MongoDB解壓後的目錄: root@root-01 src]# cd mongodb-1.3.0 生成configure目錄: [root@root-01 mongodb-1.3.0]# /usr/local/php-fpm/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Module Api No: 20131226 Zend Extension Api No: 220131226 編譯: [root@root-01 mongodb-1.3.0]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config make: [root@root-01 mongodb-1.3.0]# make && make install
[root@root-01 ~]# vim /usr/local/php-fpm/etc/php.ini 找到合適的位置,增長: extension=mongodb.sp
[root@root-01 ~]# /usr/local/php-fpm/bin/php -m [PHP Modules] Core ctype curl date dom ereg fileinfo filter ftp gd hash iconv json libxml mbstring memcache mongodb mysql mysqli openssl pcre PDO pdo_mysql pdo_sqlite Phar posix redis Reflection session SimpleXML soap SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules]
[root@root-01 mongodb-1.3.0]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
[root@root-01 ~]# cd /usr/local/src 下載mongo擴展: [root@root-01 src]# wget https://pecl.php.net/get/mongo-1.6.16.tgz 解壓: [root@root-01 src]# tar -zxvf mongo-1.6.16.tgz 進入解壓後的目錄: [root@root-01 src]# cd mongo-1.6.16 生成configure目錄: [root@root-01 mongo-1.6.16]# /usr/local/php-fpm/bin/phpize 編譯: [root@root-01 mongo-1.6.16]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config make: [root@root-01 mongo-1.6.16]# make && make install 查看有沒有mongo.so: [root@root-01 mongo-1.6.16]# ls /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/ memcache.so mongodb.so mongo.so opcache.a opcache.so redis.so
[root@root-01 ~]# vim /usr/local/php-fpm/etc/php.ini 在適合的位置,增長: extension=mongo.so
[root@root-01 ~]# /usr/local/php-fpm/bin/php -m [PHP Modules] Core ctype curl date dom ereg fileinfo filter ftp gd hash iconv json libxml mbstring memcache mongo mongodb mysql mysqli openssl pcre PDO pdo_mysql pdo_sqlite Phar posix redis Reflection session SimpleXML soap SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules]
[root@root-01 mongodb-1.3.0]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
說明:測試php結合Mongo擴展有沒有問題, 若curl測試結果顯示集合建立成功說明沒有問題
mongodb
[root@root-01 ~]# vim /data/www/default/mongo.php <?php $m = new MongoClient(); //鏈接 $db = $m->test; //獲取名稱爲"test"的數據庫 $collection = $db->createCollection("runoob"); echo "集合建立成功"; ?> curl測試: [root@root-01 default]# curl localhost/mongo.php 集合建立成功[root@root-01 default]#
說明:把--auth去掉,不使用用戶驗證的方式登陸 shell
[root@root-01 ~]# vim /usr/lib/systemd/system/mongod.service Environment="OPTIONS=--auth -f /etc/mongod.conf" 更改成: Environment="OPTIONS=-f /etc/mongod.conf"
[root@root-01 ~]# systemctl restart mongod Warning: mongod.service changed on disk. Run 'systemctl daemon-reload' to reload units. [root@root-01 ~]# systemctl daemon-reload [root@root-01 ~]# systemctl restart mongod
登陸: [root@root-01 ~]# mongo --host 192.168.2.115 --port 27017 MongoDB shell version v3.4.9 connecting to: mongodb://192.168.2.115:27017/ MongoDB server version: 3.4.9 Server has startup warnings: 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-10-20T13:07:45.345+0800 I CONTROL [initandlisten] 進入test庫: > use test switched to db test 查看集合: > show tables runoob
參考文檔:
https://docs.mongodb.com/ecosystem/drivers/php/
http://www.runoob.com/mongodb/mongodb-php.html
擴展內容:
mongodb安全設置 http://www.mongoing.com/archives/631
mongodb執行js腳本 http://www.jianshu.com/p/6bd8934bd1ca數據庫