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
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