mongdb
mongdb一个NoSQL数据库,里面存储的是BSON(Binary Serialized Document Format,支持集群,高可用、可扩展。
mongdb中的一些概念
MongoDB MySQL
database database
collection table
json 二维表
不支持SQL SQL
_id 主键
安装准备
关闭selinux
vi /etc/sysconfig/selinux
##修改
SELINUX=disabled
重新启动
reboot
安装
#创建mongodb存储数据log的目录
mkdir -p /data/mongo
mkdir /data/mongo/{log,data}
chown -R mongod:mongod /data/
#修改mongo的配置文件
vi /etc/mongod.conf
systemLog:
destination: file
logAppend: true
path: /data/mongo/log/mongod.log
storage:
dbPath: /data/mongo/data
journal:
enabled: true
net:
port: 27017
#bindIp: 127.0.0.1
#注释掉bindIp或者修改成当前机器的某一个ip地址
注意:mongo的vim文件有严格的格式要求,参数在块的新的一行填写:新起一行的开头,需要两个空格隔开.如果格式有误,会报错!
启动mongo
service mongod start#如果改了mongo的默认目录,启动时会报错
连接到mongo
如果注释掉了bindIp,那么连接时用
mongo
指定了ip地址
mongo --host hdp-nn --port 27017
使用或创建database
use wwrTable
创建集合(表)
db.createCollection("bike")
插入数据
db.bike.insert({"_id": 100001, "status": 1, "desc": "test"})
db.bike.insert({"_id": 100002, "status": 2, "desc": "test"})
查找数据(所有)
db.bine.find()
退出
exit
关闭mongo服务
sudu service mongod stop
设置服务开机启动
sudo checkconfig mongod on
设置mongo服务开机不启动
sudo chkconfig mongod off
安全认证配置
如果修改了mongo存储时的目录那么一定要修改该目录的所属用户和组为mongod
chown -R mongod:mongod /data/mongo/
添加管理员用户
1.使用admin这个database
use admin
特别注意: 1、mongodb的认证机制有2种:SCRAM-SHA-1和MONGODB-CR。3.0之后版本默认为:SCRAM-SHA-1;
2、spring-mongodb默认为:MONGODB-CR,并不支持设置认证方式;
2.查看auth认证方式
db.system.version.findOne({"_id":"authSchema"})
值为3表示:MONGODB-CR 值为5表示:SCRAM-SHA-1
3.设置为MONGODB-CR
db.system.version.insert({"_id":"authSchema","currentVersion":3})
4.在没有开启认证的情况下,创建一个超级用户
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ {role: "root", db: "admin" }]
}
)
5.修改mongo的配置文件/etc/mongod.conf,配置mongo的安全认证
security:
authorization: enabled
6.重启mongo服务
service mongod restart
7.重新使用mongo shell连接
mongo
8.使用admin database
use admin
9.授权登录
db.auth("admin", "admin123")
10.添加一个普通用户,具备读写权限
use mobike
db.createUser(
{
user: "wwr",
pwd: "123456",
roles: ["readWrite"]
}
)
11.使用新用户登录
mongo
use mobike
db.auth(" wwr", "123456")
在database下创建collection
db.createCollection("users")
db.createCollection("bikes")
查看当前数据库所有的集合
show collections
插入数据
db.users.insert( { name: "laowang", age: 30 } )
查找
db.users.find()
db.users.update({'name':'laowang'},{$set:{'age': 18}},{multi:true}) #true 修改所有name=laowang false :改找到的第一个叫laowang的age
db.users.remove({'name': 'laoxu'})
db.users.remove({'name': 'laoxu'}, 1)
db.users.find({"name":"laoxu", "fv": 99.99})
查看当前db的索引
db.logs.getIndexes()
创建索引
db.logs.ensureIndex({"name":1})
删除索引
db.logs.dropIndex({"name":1})
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root