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
最后更新于
这有帮助吗?