MongoDB安全访问
MongoDB安全访问跟SQL很像,都是靠给不同的用户权限。
创建用户和权限
管理用户:
use admin; db.createUser({ user :'root', pwd : '123456', roles : [ { role:'userAdminAnyDatabase', //任何数据库的用户管理权限 db:'admin' }, { role:'readWriteAnyDatabase', //任何数据库的读写权限 db:'admin' } ] });
普通用户
use skdb; db.createUser({ user:'mysk', pwd:'123456', roles:[ { role:'dbAdmin', //某数据库的管理权限 db:'skdb' }, { role:'readWrite', //某数据库的读写权限 db:'skdb' } ] })
开启安全配置
vi /etc/mongo.conf
开启:
security:
authorization: enabled
重启MongoDB
安全访问(客户端、程序)程序
<!--配置mongodb信息-->
<mongo:mongo-client id="mongo" host="10.211.55.7" port="27017" credentials="用户名:密码@数据库"/>
<mongo:db-factory id="mongoDbFactory"
dbname="skdb"
mongo-ref="mongo"/>
MongoDB基本命令
show dbs;//显示所有数据库
use db;//db为数据库名,用于切换或创建数据库
show tables;//显示当前数据库所有表
db.dropDatabase();//删库
MongoDB基本查询操作
insertOne()
语法db.collection.insertOne( <document>, { writeConcern: <document> } )
案例
db.students.insertOne( { stuname:'小明', stuage:18, stusex:'男' } )
insertMany()
语法db.collection.insertMany( [ <document 1> , <document 2>, ... ], { writeConcern: <document>, ordered: <boolean> } )
案例:
db.students.insertMany( [ { stuname:'小赵', stuage:23, stusex:'男' }, { stuname:'小王', stuage:22, stusex:'女' }, { stuname:'小黑', stuage:25, stusex:'男' } ] )
必须要加中括号,因为传入的数据要是一个文档list(就算插入一个也要用list[]框起来)
insert()
可以插入一条,也可以插入多条db.students.insertMany( [ { stuname:'小赵', stuage:23, stusex:'男' }, { stuname:'小王', stuage:22, stusex:'女' }, { stuname:'小黑', stuage:25, stusex:'男' } ] )
技术选型
- 在使用脚本处理时,优先使用
insert()
- 在编程代码时,使用
insertOne()
或insertMany()
插入时间类型(三种方式)
new Date()
方式db.students.insert([ { stuname:'小赵', stuage:23, stusex:'男' addtime:new Date() } ])
时间是格林尼治时间,北京时间上午11点插入,数据显示凌晨3点。
ISODate()
db.students.insert([ { stuname:'小吕', stuage:29, stusex:'男', addtime:ISODate('2020-03-10T03:20:20Z') } ])
$currentDate
(一个修改器)db.students.update( {stuname:'小托'}, { $set: { stuage:23 }, $currentDate:{addtime:true} })
new Date()
是客户端当前时间,而$currentDate()
获取的是服务器端时间
技术选型:
- 当插入客户端时间时,用
new Date()
- 当插入服务器端时,用
$currentDate()
- 当插入固定时间时,用
ISODate()
Comments | NOTHING