mongdb一个NoSQL数据库,里面存储的是BSON(Binary Serialized Document Format,支持集群,高可用、可扩展。
mongdb中的一些概念
MongoDB MySQL
database database
collection table
json 二维表
不支持SQL SQL
_id 主键
创建一个普通用户xiaoniu
useradd xiaoniu
为hadoop用户添加密码:
echo 123456 | passwd --stdin xiaoniu
将bigdata添加到sudoers
echo "xiaoniu ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/xiaoniu chmod 0440 /etc/sudoers.d/xiaoniu
解决sudo: sorry, you must have a tty to run sudo问题,在/etc/sudoer注释掉 Default requiretty 一行
sudo sed -i 's/Defaults requiretty/Defaults:xiaoniu !requiretty/' /etc/sudoers
配置mongo的yum源
sodu vi /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
关闭selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
重新启动
reboot
mongo的安装和基本使用
在机器上使用xiaoniu用户登录(本地安装给你了rpm包,rpm -ivh *.rpm)
sudo yum install -y mongodb-org
修改mongo的配置文件
sudo vi /etc/mongod.conf
注释掉bindIp或者修改成当前机器的某一个ip地址
启动mongo
sudo service mongod start
连接到mongo
如果注释掉了bindIp,那么连接时用
mongo
指定了ip地址
mongo --host 192.168.100.101 --port 27017
使用或创建database
use xiaoniu
创建集合(表)
db.createCollection("bike")
插入数据
db.bike.insert({"_id": 100001, "status": 1, "desc": "test"}) db.bike.insert({"_id": 100002, "status": 1, "desc": "test"})
查找数据(所有)
db.bine.find()
退出
exit
关闭mongo服务
sudu service mongod stop
设置服务开机启动
sudo checkconfig mongod on
设置mongo服务开机不启动
sudo chkconfig mongod off
mongo安全认证配置
如果修改了mongo存储是的目录那么一定要修改该目录的所属用户和组为mongod
#chown -R mongod:mongod /mongo/
添加管理员用户
使用admin这个database
use admin
在没有开启认证的情况下,创建一个超级用户
db.createUser( { user: "laozhao", pwd: "laozhao123", roles: [ {role: "root", db: "admin" }] } )
修改mongo的配置文件/etc/mongod.conf,配置mongo的安全认证
security:
authorization: enabled
重启mongo服务
service mongod restart
重新使用mongo shell连接
mongo
使用admin database
use admin
授权登录
db.auth("admin", "admin123")
创建一个bike数据库
use bike
添加一个普通用户,具备读写权限
db.createUser( { user: "xiaoniu", pwd: "123568", roles: ["readWrite"] } )
使用小牛用户登录
mongo use bike db.auth("xiaoniu", "123568")
在database下创建collection
db.createCollection("users") db.createCollection("bikes")
插入数据
db.users.insert( { name: "laozhao", age: 30 } )
查找
db.users.find() db.users.update({'name':'laozhao'},{$set:{'age': 18}},{multi:true}) db.users.remove({'name': 'laoduan'}) db.users.remove({'name': 'laoduan'}, 1) db.users.find({"name":"laoduan", "fv": 99.99})
查看当前db的索引
db.logs.getIndexes()
创建索引
db.logs.ensureIndex({"name":1})
删除索引
db.logs.dropIndex({"name":1})
开启运行用户从其他机器连接mongodb
不然会报错Caused by: java.net.ConnectException: Connection refused (Connection refused)
修改/etc/mongod.conf,注释掉bindIp:
bindIp:
重启mongodb
service mongod restart
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system