说明: 前面建立了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数据库