一、环境准备
1、Centos7
2、mongodb3.4.2
3、三台机器IP分别是:192.168.0.183
二、mongdb数据库的安装
1、首先下载好mongodb安装包mongodb-linux-x86_64-rhel70-3.4.2.tgz
cd /usr/local
mkdir data
cd data
wget https://bbcbackup.oss-cn-shenzhen.aliyuncs.com/run/linux/mongodb-linux-x86_64-rhel70-3.4.2.tgz
2、使用tar命令解压安装包然后修改解压后的目录名
tar zxvf mongodb-linux-x86_64-rhel70-3.4.2.tgz
mv mongodb-linux-x86_64-rhel70-3.4.2 mongodb
3、 进入 mongodb目录中新建三个目录conf、logs 、db
conf存储配置文件目录,logs用来存储日志目录,db用来存储数据目录
cd mongodb
cd mongodb && mkdir conf logs db
4、进入conf目录新建mongodb的配置文件mongodb.conf
cd conf && touch mongodb.conf
5、编写配置文件mongodb.conf,内容如下
其中dbpath是数据库文件目录,logpath是日志目录,port是mongodb所占用的端口,fork是true的时候表示在后台启动
dbpath=/usr/local/data/mongodb/db
logpath=usr/local/data/mongodb/logs/mongodb.log
port=27017
fork=true
6、启动mongodb
其中–replSet表示副本集群参数 ,mongoTest是副本集名称,这里的名字可以任意取,另外两台机也要和这个一样
/usr/local/data/mongodb/bin/mongod --config /usr/local/data/mongodb/conf/mongodb.conf
如果启动成功会看到类似下面的提示
about to fork child process, waiting until server is ready for connections.
forked process: 15398
child process started successfully, parent exiting
开启端口-27017
firewall-cmd --state
#添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
#重新载入
firewall-cmd --reload
1、进行初始化
usr/local/data/mongodb/bin/mongo -port 27017
2、 使用admin库
use admin
三、增加安全认证机制KeyFile
3.1、在data目录下
cd data
openssl rand -base64 745 > /usr/local/data/mongodb/mongodb-keyfile
cd mongodb
chmod 600 /usr/local/data/mongodb/mongodb-keyfile
3.2 修改配置
在mongodb.conf启动配置文件中增加配置项
keyFile=/usr/local/data/mongodb/mongodb-keyfile
3.3 主库配置用户
db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]});
#认证用户
db.auth("admin","123456")
db.auth("root","123456")
3.4开启了安全认证就可以开始对每个数据库进行安全认证了,首先给用户创建一个数据库:
mongoTest:PRIMARY> use test #创建一个test数据库,然后直接show dbs;是不显示的,要插入一条数据再查看,才能查看test数据库。
switched to db user_test
#插入一条数据
mongoTest:PRIMARY> db.test.insert({item: "ABC1",details: {model: "14Q3",manufacturer: "XYZ Company"},stock: [ { size: "S", qty: 25 }, { size: "M", qty: 50 } ],category: "clothing"})
#创建用户数据库的用户:
mongoTest:PRIMARY> db.createUser({user:"test_user",pwd:"123456",roles:[{role:"readWrite",db:"test"}]});
show dbs;#看看数据库是不是多了一个user_test,如果是,说明成功啦
3.5 验证用户登录
[root@localhost bin]# ./mongo 192.168.0.183/test -u test_user -p123456
MongoDB shell version v3.4.2
connecting to: mongodb://192.168.0.183/test
MongoDB server version: 3.4.2