1. 基本语句
查看库 分号可加可不加
show databases;
show dbs;
use yq 不用创建,use会自动创建,表插入数据也会自动创建
默认使用json的格式存储数据,不区分类型,都是字符串
数据库的对象 库databases 表collection 行 document
db级别命令
db 当前所在的库
db.[tab] 使用tab补全
db.help 查看帮助
collection级别的操作
db.collection.xxx
插入数据
db.t1.insert({name:"yq"})
复制集有关的操作
rs.
分片的操作
sh.
帮助命令的使用
show
use
db.help()
db.a.help()
rs.help()
sh.help()
常规的操作
db 或 db.getName() | 显示当前的数据库 |
---|
show dbs | 查询所有库 | use local | 切换数据库 | show tables | 查看表 | db.stats() | 显示当前数据库状态 | db.getMongo() | 查看当前数据库的连接机器地址 |
库的操作
创建数据库: 当use的时候,系统就会自动创建一个数据库。 如果use之后没有创建任何集合。 系统就会删除这个数据库。
删除数据库 如果没有选择任何数据库,会删除默认的test数据库 删除:
use test
db.dropDatabase()
集合操作
创建
use yq
db.createCollection('a')
db.createCollection('b')
show collections
db.getCollectionNames()
插入数据
当插入一个文档的时候,一个集合就会自动创建
use oldboy
db.oldguo.insert({id : "1021" ,name : "zhssn" ,age : "22" ,gender : "female",address : "sz"})
查询数据:
db.oldguo.find({id:"101"}).pretty()
db.oldguo.find().pretty()
删除集合
use app
db.log.drop()
log就是你要删除的集合的名字
重命名集合
db.log.renameCollection("log1")
show collections
批量的插入
for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new
Date()})}
查询数据
所有
db.t1.find()
注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
设置每页显示数据的大小:
> DBQuery.shellBatchSize=50; //每页显示50条记录
查看第1条记录
db.log.findOne()
删除集合中的记录数
db.log.remove({})
查询去掉当前集合中某列的重复数据
db.log.distinct("name")
查看集合存储信息
app> db.log.stats()
app> db.log.dataSize() //集合中数据的原始大小
app> db.log.totalIndexSize() //集合中索引数据的原始大小
app> db.log.totalSize() //集合中索引+数据压缩存储之后的大小 *****
app> db.log.storageSize() //集合中数据压缩存储的大小
2. 用户的管理
验证库,建立用户时use到的库,在使用用户时,要加上验证库才能登陆。对于管理员用户,必须在admin下创建.
- 建用户时,use到的库,就是此用户的验证库
- 登录时,必须明确指定验证库才能登录
- 通常,管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库
- 如果直接登录到数据库,不进行use,默认的验证库是test,不是我们生产建议的.
2.1 创建用户的格式
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.51/oldboy
2.2 创建一个超级管理员用户
2.2.1 创建用户
mongo
use admin
db.createUser(
{
user: "root",
pwd: "root123",
roles: [ { role: "root", db: "admin" } ]
}
)
验证用户
db.auth('root','root123')
2.2.2 配置文件的修改
添加 开启用户验证
security:
authorization: enabled
总的配置文件
systemLog:
destination: file
path: "/mongodb/log/mongodb.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "/mongodb/data/"
processManagement:
fork: true
net:
port: 27017
bindIp: 192.168.80.51,127.0.0.1
security:
authorization: enabled
重启
mongod -f /mongodb/conf/mongo.conf --shutdown
mongod -f /mongodb/conf/mongo.conf
登录验证
mongo -uroot -proot123 admin
mongo -uroot -proot123 192.168.80.51/admin
注意 假若我们这样mongo -uroot -proot123 192.168.80.51,就会报错,必须跟库的名称,在那个库下创建的就跟那个库的名称
[mongod@db01 conf]$ mongo -uroot -proot123 192.168.80.51/admin
MongoDB shell version v3.6.12
connecting to: mongodb://192.168.80.51:27017/admin?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c912c54c-8bc4-40cf-a4d1-34b0c4bba38c") }
MongoDB server version: 3.6.12
>
用户的查看
use admin
db.system.user.find().pretty()
> db.system.users.find().pretty()
{
"_id" : "admin.root",
"user" : "root",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "kj0Un9SNfWD9kCM6gOgW0A==",
"storedKey" : "XYnQioev6EmzZesxjy3Sdkarydc=",
"serverKey" : "NmySZOdIuOLKQb5IUWY/hSnjTi4="
}
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
2.3 创建管理用户dbAdmin,只能对库进行操作
mongo -uroot -proot123 admin
use app
db.createUser(
{
user: "admin",
pwd: "admin",
roles: [ { role: "dbAdmin", db: "app" } ]
}
)
db.auth('admin','admin')
mongo -uadmin -padmin 10.0.0.51/app
2.4 创建一个库的用户,可读写
超级管理员用户登录
mongo -uroot -proot123 admin
use app
db.createUser(
{
user: "app01",
pwd: "app01",
roles: [ { role: "readWrite" , db: "app" } ]
}
)
验证
本地
mongo -uapp01 -papp01 app
远程
mongo -uapp01 -papp01 192.168.80.51/app
2.5 创建app数据库读写权限的用户并对test数据库具有读权限
mongo -uroot -proot123 192.168.80.51/admin
use app
db.createUser(
{
user: "app03",
pwd: "app03",
roles: [ { role: "readWrite", db: "app" },
{ role: "read", db: "test" }]})
2.6 查询所有的用户
mongo -uroot -proot123 admin
db.system.users.find().pretty()
2.7 删除用户
在那个库下边创建的用户,use库里边进行删除 必须登录管理员的账户
mongo -uroot -proot123 192.168.80.51/admin
use app
db.dropUser("app01")
|