centos 安装mongodb

下载包地址:
https://www.mongodb.com/try/download/community

在这里插入图片描述
上传到服务器

#解压
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.13.tgz
#创建配置文件 指定数据目录 日志目录
vim mongodb.conf
dbpath = /home/mongodb/datas 
logpath = /home/mongodb/mongodb.log 
port = 27017 
fork = true 
bind_ip = 0.0.0.0 
#启动
./mongod -f /mongodb-linux-x86_64-rhel70-5.0.13/config/mongodb.conf

如果启动报错

 about to fork child process, waiting until server is ready for connections.
forked process: 129022
ERROR: child process failed, exited with 1
To see additional information in this output, start without the "--fork" option.

解决办法:进入dbpath 删除mongod.lock

cd /home/mongodb/datas
rm -rf mongod.lock

链接mongodb

#登录当前mongodb
./mongo
#使用账号密码登录指定数据库,mongo基于数据库进行权限认证
./mongo --port 27017 -u admin -p psword --authenticationDatabase "dbname"
#选择数据库 如果没有则创建
use dbname
#使用账户密码登陆 在命令行里输入:
mongodb://admin:123456@localhost
#可连接远程服务
mongodb://admin:123456@10.0.0.75
#可连接远程服务并选择数据库
mongodb://admin:123456@10.0.0.75/dbname
#查看所有数据库
> show dbs
#使用库
> use local
#查看所有集合
> show collections
#查看集合所有文档
> db.startup_log.find()
#停止服务
db.shutdownServer()

创建用户:

#创建admin用户
use admin
db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
#创建root
db.createUser({user: "root",pwd: "password", roles: [ { role: "root", db: "admin" } ]})
#创建数据库用户 只限此数据库使用
use yourdatabase
#创建全部权限用户
db.createUser({user: "user",pwd: "password",roles: [ { role: "dbOwner", db: "yourdatabase" } ]})
#创建只有读写权限用户
db.createUser({user: "uname",pwd: "pwd",roles: [ { role: "readWrite", db: "yourdatabase" } ]})

创建用户后 开启权限验证 否则不登录用户也会进行数据库操作
vim mongodb.conf 增加如下配置 保存 重启mongo

security:
  authorization: enabled

删除用户(必须由管理员来删):

use admin
#切换管理员账户
db.auth("admin","password")
#删除用户
db.system.users.remove({user:"XXXXXX"})

搭建mongo副本集
mongodb副本集(replica set)
mongodb副本集时由一组mongod实例进程组成,是由一个primary节点和一个或多个secondary节点组成。
MongoDB的最新版本已经不推荐使用master-slave主从复制
副本集节点可以有的角色:(primary和secondary外)
primary主节点:接受所有的写请求,然后将修改数据同步给secondary节点,一个副本集只能有一个primary节点
secondary副本节点:保存数据,通过rs.slaveOk()设置可以提供只读服务
arbiter仲裁节点:不保存数据,不能作为主节点,只能用于选举投票,在资源或硬件设备差的情况下可以使用
简单的副本集架构
PSS:主节点,副本节点,副本节点
PSA:主节点,副本节点,仲裁节点
一.mongodb副本集搭建

replica set故障切换完全自动
MongoDB的最新版本已经不推荐使用master-slave主从复制

1)环境准备
10.0.0.103
10.0.0.104
10.0.0.105

2)配置各个节点
各个节点创建目录

#文件目录
mkdir -p /home/data/mongodb
#日志目录
mkdir -p /home/data/logs/mongodb/

添加集群节点认证

#在一个节点上生成秘钥文件 然后复制到其他节点
openssl rand -base64 745 > /home/program/mongodb/keyfile

所有节点 创建配置文件

vim /home/mongodb/mongodb.conf

所有节点添加如下配置

dbpath=/home/data/mongodb
logpath=/home/data/logs/mongodb/mongodb.log
pidfilepath=/home/data/mongodb/mongodb.pid
directoryperdb=true
logappend=true
#设置副本集名称,各节点必须相同
replSet=rs
#监听全部ip
bind_ip=0.0.0.0
port=27017
fork=true
#开启认证
auth=true
#秘钥文件 就是上边生成的秘钥文件
keyFile=/home/program/mongodb/keyfile

分别启动各节点服务

/home/mongodb/bin/mongod -f /home/mongodb/mongodb.conf

初始化
##登录其中一个节点 例如登陆 10.0.0.103

#进入mongo客户端
/home/mongodb/bin/mongo
#执行命令 进行配置
config_rs={_id:'rs',members:[{_id:0,host:'10.0.0.103:27017',priority:1},{_id:1,host:'10.0.0.104:27017'},{_id:2,host:'10.0.0.105:27017'}]}
#初始化
rs.initiate(config_rs)
#查看副本集状态
rs.status()

创建用户:

#先切换数据库
use admin
#创建用户
db.createUser({user:"admin",pwd:"password",roles:[{role:'userAdminAnyDatabase',db:"admin"}]})
#创建用户后 需要退出从新登陆mongo 或者切换用户
./mongo --port 27017 -u admin -p password --authenticationDatabase "admin"
#切换admin用户
db.auth("admin","password")
#创建root用户
db.createUser({user:"root",pwd:"password",roles:[{role:'root',db:"admin"}]})
#创建数据库用户 只限此数据库使用
use yourdatabase
#创建全部权限用户
db.createUser({user: "user",pwd: "password",roles: [ { role: "dbOwner", db: "yourdatabase" } ]})
#创建完用户后 使用admin执行rs.status会报错 需要添加集群权限
#切换数据库
use admin
#给admin用户赋值集群权限
db.grantRolesToUser("admin", ["clusterAdmin"])
#在查看就可以了
#查看集群状态
rs.status()
#查看集群配置
rs.config()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值