mongodb(中)

mongodb 用户管理

use admin # 需要切换到admin库,没有会创建

db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin122", roles: [ { role: "root", db: "admin" } ] } )
# user指定用户,customData为说明字段,可以省略,pwd为密码,roles指定用户的角色,db指定库名 

use admin # 切换到admin库

db.system.users.find()  # 列出所有用户,需要切换到admin库

show users  # 查看当前库下所有的用户

db.dropUser('admin') # 删除用户
若要用户生效,还需要编辑启动脚本

vim /usr/lib/systemd/system/mongod.service,
在OPTIONS=后面增--auth

# 重启服务
systemctl restart mongod

# 用户名密码登陆
mongo -u "admin" -p "admin122" --authenticationDatabase "admin"
use db1
 db.createUser( { user: "test1", pwd: "123aaa", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } )

# test1用户对db1库读写,对db2库只读。
 之所以先use db1,表示用户在 db1 库中创建,
# 就一定要db1库验证身份,即用户的信息跟随随数据库。比如上述 test1虽然有 db2 库的读取权限,
# 但是一定要先在db1库进行身份验证,直接访问会提示验证失败。


use db2
db.auth("test1", "123aaa")

用户权限role

  • Read:允许用户读取指定数据库

  • readWrite:允许用户读写指定数据库

  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

  • root:只在admin数据库中可用。超级账号,超级权限

mongodb 操作

库管理

> db.version()    #mongodb版本号
> use userdb      #切换数据库
> show dbs        #查看所有库,查不到 userdb 库,需要创建一个集合才能show
> db.createCollection('mycol')   #创建集合
> show dbs        #此时就可以显示 userdb 库
> db.dropDatabase()  #删除当前库
> show dbs          #此时查看不到 userdb 库
> use admin
> db.status()        #查看当前库信息
> db.serverStatus()  #查看当前服务器信息

集合管理

> db.createCollection("mycol",{ capped:true, autoIndexID:true, size:6142800, max:10000 })
     # capped 为true 就是启用封顶集合,当达到最大大小,会自动覆盖最早的条目
     # size 连用来指定大小
     # max 为最大文件数
     # autoindexID  true/false (可选)如果为true,自动创建索引_id字段的默认值是false

> show collections        
   # 查看所有的集合

> db.Account.insert({ AccountID:1, UserName:"123",password:"123456" })      
   # 插入文档,其中的 Account 为集合的名称,如果该集合没有存在,会自动创建

> db.Account.find()                    
  # 查找所有文档,也可以在find()中添加条件,如:find({ AccountID:2 })

> db.Account.update({AccountID:1},  { "$set":{"Age":30} })          
  # 可以添加字段,也可以修改字段的值

> db.Account.remove({Account:1})           #删除某一行

> db.Account.drop()                       #删除集合中所有的文档

> db.printCollectionStats()          #打印库里的所有状态

使用 php连接mongodb

mongodb 的 php 扩展有两种:mongodb和mongo

安装mongodb

cd /usr/local/src/


git clone https://github.com/mongodb/mongo-php-driver


cd mongo-php-driver


git submodule update --init
 /usr/local/php/bin/phpize


./configure --with-php-config=/usr/local/php/bin/php-config


make && make install



vi /usr/local/php/etc/php.ini 
# 增加 
extension = mongodb.so


/usr/local/php/bin/php -m

或者去官方下载

cd /usr/local/src/


wget https://pecl.php.net/get/mongodb-1.3.0.tgz 


tar zxvf mongodb-1.3.0.tgz


cd mongodb-1.3.0
 /usr/local/php/bin/phpize


./configure --with-php-config=/usr/local/php/bin/php-config


make && make install


vi /usr/local/php/etc/php.ini 
# 增加 
extension = mongodb.so


/usr/local/php/bin/php -m

安装mongo

cd /usr/local/src/


wget https://pecl.php.net/get/mongo-1.6.16.tgz 


tar zxvf mongodb-1.6.16.tgz


cd mongodb-1.6.16


/usr/local/php/bin/phpize


./configure --with-php-config=/usr/local/php/bin/php-config


make && make install


vi /usr/local/php/etc/php.ini 
# 增加 
extension = mongo.so


/usr/local/php/bin/php -m

最后更新于

这有帮助吗?