mongdb一个NoSQL数据库,里面存储的是BSON(Binary Serialized Document Format,支持集群,高可用、可扩展。
mongdb中的一些概念(和MySQL的一些区别)
MongoDB | MySQL |
---|---|
database | database |
collection | table |
json | 二维表 |
不支持SQL | SQL |
_id | 主键 |
安装
前期准备工作
#创建一个普通用户XXX
useradd XXX
#为hadoop用户添加密码:
echo 123456 | passwd --stdin XXX
#将bigdata添加到sudoers
echo "XXX ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/XXX
chmod 0440 /etc/sudoers.d/XXX
#解决sudo: sorry, you must have a tty to run sudo问题,在/etc/sudoer注释掉 Default requiretty
一行
sudo sed -i 's/Defaults requiretty/Defaults:XXX !requiretty/' /etc/sudoers
#配置mongo的yum源
sodu vim /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
sudo vim /etc/sysconfig/selinux
SELINUX=disabled
#重新启动
sudo reboot
mongodb的安装和基本使用
#在机器上使用XXX用户登录(如果本地安装已经有了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 IP地址 --port 27017
#使用或创建database
use databasename
#创建集合(表)
db.createCollection("tablename")
#插入数据
db.tablename.insert({"_id": 100001, "status": 1, "desc": "test"})
db.tablename.insert({"_id": 100002, "status": 1, "desc": "test"})
#查找数据(所有)
db.tablename.find()
#退出
exit
#关闭mongo服务
sudu service mongod stop
#设置服务开机启动
sudo chkconfig mongod on
#设置mongo服务开机不启动
sudo chkconfig mongod off
mongo安全认证配置
如果修改了mongo存储是的目录那么一定要修改该目录的所属用户和组为mongod
#chown -R mongod:mongod /mongo/
#添加管理员用户
#使用admin这个database
use admin
#在没有开启认证的情况下,创建一个超级用户
db.createUser(
{
user: "username",
pwd: "userpwd",
roles: [ {role: "root", db: "admin" }]
}
)
#修改mongo的配置文件/etc/mongod.conf,配置mongo的安全认证
注意:authorization: enabled前面一定要空两格
security:
authorization: enabled
#重启mongo服务
service mongod restart
#重新使用mongo shell连接
mongo
#使用admin database
use admin
#授权登录
db.auth("username", "userpwd")
#创建一个bike数据库
use bike
#添加一个普通用户,具备读写权限
db.createUser(
{
user: "username",
pwd: "userpwd",
roles: ["readWrite"]
}
)
#使用刚刚创建的用户登录
mongo
use bike
db.auth("username", "userpwd")
#在database下创建collection
db.createCollection("users")
db.createCollection("bikes")
#插入数据
db.users.insert( { name: "laowang", age: 30 } )
#查找(查找全部)
db.users.find()
#更新数据(修改数据)
db.users.update({'name':'laowang'},{$set:{'age': 18}},{multi:true})
#删除数据
db.users.remove({'name': 'laowang'})
db.users.remove({'name': 'laowang'}, 1)
#查看当前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