MOngoDB基础操作及用户权限管理

MongoDB常用基础操作及用户权限管理

一、mongodb常用基本操作

1.mongodb 默认存在的库

--查看库
show databases;
admin   0.000GB
config  0.000GB
local   0.000GB

--查看当前所在的库
db

--库的介绍
test:登录时默认存在的库()
管理MongoDB有关的系统库
admin库:系统预留库,MongoDB系统管理库
local库:本地预留库,存储关键日志
config库:MongoDB配置信息库

show databases/show dbs
    
--查看集合
show tables
show collections

use admin 
db <-相当于MySQL中->  select database()

2.命令种类

1)db 对象相关命令
--库级别
db.[TAB][TAB]
db.help()

--表和文档
db.hhh.[TAB][TAB]
db.hhh.help()
2)rs 复制集有关(replication set):
rs.[TAB][TAB]
rs.help()
3)sh 分片集群(sharding cluster)
sh.[TAB][TAB]
sh.help()

3.mongodb对象操作

mongo         mysql
库    ----->  库
集合  ----->  表
文档  ----->  数据行
1)库的操作
--建库
> use hhh

--删库
> use hhh
> db.dropDatabase()
{ "dropped" : "hhh", "ok" : 1 }



> use hhh
switched to db hhh
> db
hhh
# 这里如果使用use,之前没有创建的库,都会创建好,只不过是临时创建
2)集合的操作
--建表
方法一:
> db.createCollection('a')
> db.createCollection('b')
    
方法2:当插入一个文档的时候,一个集合就会自动创建。
use hhh
> db.c.insert({id:1309,name:"coco"})


db.stu.insert({id:101,name:"zhangsan",age:20,gender:"m"})
show tables;
db.stu.insert({id:102,name:"lisi"})
db.stu.insert({a:"b",c:"d"})
db.stu.insert({a:1,c:2})
    
--查看stu表的数据行数
> db.stu.count()
4

--全表查询,以标准的josn格式显示
db.stu.find().pretty()
{
	"_id" : ObjectId("6084cc7632c58d17e80ea867"),
	"id" : 101,
	"name" : "cici",
	"age" : 18,
	"gender" : "m"
}
{
	"_id" : ObjectId("6084ccb932c58d17e80ea868"),
	"id" : 102,
	"name" : "lisa"
}
{ "_id" : ObjectId("6084ccd932c58d17e80ea869"), "a" : "b", "c" : "d" }
{ "_id" : ObjectId("6084ccee32c58d17e80ea86a"), "a" : 1, "c" : 2 }

3)文档操作
--数据批量录入:
for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new
Date()})}

--查询数据行数:
> db.log.count()
    
--全表查询:
> db.log.find()

--每页显示50条记录:
> DBQuery.shellBatchSize=50; 

--照条件查询
> db.log.find({uid:999})
>db.log.find({uid:999}).pretty()

--以标准的json格式显示数据
> db.log.find({uid:999}).pretty()
{
    "_id" : ObjectId("5cc516e60d13144c89dead33"),
    "uid" : 999,
    "name" : "mongodb",
    "age" : 6,
    "date" : ISODate("2019-04-28T02:58:46.109Z")
}

--删除集合中所有记录
app> db.log.remove({uid:1000})
 
在MongoDB中,会自动给我们创建主键 --- 聚簇索引    

4.查看集合存储信息

app> db.log.totalSize() //集合中索引+数据压缩存储之后的大小    

二、用户及权限管理

1.注意

验证库: 建立用户时use到的库,在使用用户时,要加上验证库才能登陆。

对于管理员用户,必须在admin下创建.
1. 建用户时,use到的库,就是此用户的验证库
2. 登录时,必须明确指定验证库才能登录
3. 通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
4. 如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的.
5. 从3.6 版本开始,不添加bindIp参数,默认不让远程登录,只能本地管理员登录。

2.用户创建语法

use admin 
db.createUser
{
    user: "<name>",
    pwd: "<cleartext password>",
    roles: [
       { role: "<role>",
     db: "<database>" } | "<role>",
    ...
    ]
}

--基本语法说明:
user:用户名
pwd:密码
roles:
    role:角色名
    db:作用对象 
role:root(超级管理员), readWrite(读写操作),read(只读)
验证数据库:
mongo -u oldboy -p 123 10.0.0.52/hhh

3. 用户管理案例

1)创建超级管理员
管理所有数据库(必须use admin再去创建)
$ mongo
use admin
db.createUser(
{
    user: "root",
    pwd: "root123",
    roles: [ { role: "root", db: "admin" } ]
}
)
2)验证用户
db.auth('root','root123')
3)配置文件中,加入以下配置
vim /mongodb/conf/mongo.conf 

security:
  authorization: enabled
4)重启mongodb
mongod -f /mongodb/conf/mongo.conf --shutdown 
mongod -f /mongodb/conf/mongo.conf 
5)登录验证(远程登录时要指定验证库)
--方法一
mongo -uroot -proot123  admin

--方法二
mongo -uroot -proot123 10.0.0.52/admin

--方法三
mongo
use admin
db.auth('root','root123')

一个库可以当做多个用户的验证库
6)查看用户
use admin
db.system.users.find().pretty()

{
	"_id" : "admin.root",
	"userId" : UUID("330e6c64-821a-4677-b1e8-8bbde7eced34"),
	"user" : "root",
	"db" : "admin",
	"credentials" : {
		"SCRAM-SHA-1" : {
			"iterationCount" : 10000,
			"salt" : "HEUWrP5RKqYzVqNULN72bQ==",
			"storedKey" : "BD+bHz8qIVv1JfQNEx6m8mO0dFw=",
			"serverKey" : "MmLIBsgsJqGRQTUseKP6CVoq/hM="
		},
		"SCRAM-SHA-256" : {
			"iterationCount" : 15000,
			"salt" : "WqQlKRAPPCA8+r3S1rKNg72Z0EhCN7NIo60EtA==",
			"storedKey" : "BN2WKMTBmyz0MgXvrxUCRg3XWDiGwck86Am5irjrz5A=",
			"serverKey" : "49poBQ5jCBbkoUffxAUaxanI6AO9Nga2stSuZ+L+5iM="
		}
	},
	"roles" : [
		{
			"role" : "root",
			"db" : "admin"
		}
	]
}

3.创建应用用户

use hhh
> db.createUser({user:"h1",pwd:"123",roles:[{role:"readWrite",db:"hhh"}]})
Successfully added user: {
	"user" : "h1",
	"roles" : [
		{
			"role" : "readWrite",
			"db" : "hhh"
		}
	]
}

# 注意:readWrite这里一定要区分大小写,不然会报错,创建不成功

--连接测试
mongo -uh1 -p123 hhh
1)查询mongodb中的用户信息
mongo -uroot -proot123 10.0.0.52/admin
db.system.users.find().pretty()
2)删除用户(root身份登录,use到验证库)
删除用户
db.createUser({user: "app01",pwd: "app01",roles: [ { role: "readWrite" , db: "app" } ]})

mongo -uroot -proot123 10.0.0.52/admin
use app
db.dropUser("app01")

4.用户管理注意事项

1. 建用户要有验证库,管理员admin,普通用户是要管理的库
2. 登录时,注意验证库
mongo -uapp01 -papp01 10.0.0.52:27017/oldboy
3. 重点参数
net:
   port: 27017
   bindIp: 10.0.0.52,127.0.0.1
security:
   authorization: enabled
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值