目录
-
1. 下载安装包
-
2. 将安装包上传至服务器
-
3. 解压
-
4. 创建配置文件
-
5. 修改环境变量
-
6. 启动mongo
-
7. 连接数据库
-
8. 绑定ip说明
-
9. 设置用户名密码
-
10. 关闭mongo
-
11. 使用用户名密码登录
-
12. 配置开机自启动
Docker安装MongoDB
1. 下载安装包
-
这里使用免费的社区版本 (
下载地址
)
-
版本号4.4.11,CentOS7,tgz压缩包
2. 将安装包上传至服务器
3. 解压
-
解压
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.11.tgz
-
重命名
mv mongodb-linux-x86_64-rhel70-4.4.11 mongodb
-
创建数据存放文件夹、日志存放文件夹、配置文件夹
mkdir -p mongodb/{data/db,log,conf}
4. 创建配置文件
vim mongodb/conf/mongodb.conf
storage:
dbPath: "/usr/local/soft/mongodb/data/db" #数据存放位置
systemLog:
destination: file
path: "/usr/local/soft/mongodb/log/mongodb.log" #日志存放位置
bindIp: 0.0.0.0 #对远程连接ip不限制
port: 27017 #端口号
processManagement:
fork: true #后台启动
5. 修改环境变量
-
将mongodb/bin目录下的可执行添加到环境变量中,方便使用mongo/bin下面的命令
-
修改profile文件
export MONGODB_HOME=/usr/local/soft/mongodb/
export PATH=$PATH:$MONGODB_HOME/bin
6. 启动mongo
mongod -f mongodb/conf/mongodb.conf
7. 连接数据库
-
因为没有设置用户名密码,也没有对ip做限制,本机(ip:192.168.42.111)可以直接使用
mongo
命令登录
mongo mongodb://192.168.42.111:27017
8. 绑定ip说明
bindIp: 127.0.0.1 #只允许本机登录,其他客户都不能连接
-
使用固定ip连接,这个ip可以使用一个内网的地址,保证一定程度的安全性,多个ip之间可以使用逗号分隔,比如127.0.0.1,192,168.42.111
bindIp: 192.168.42.111 #只允许使用IP 192.168.42.111进行连接
mongo mongodb://192.168.42.111:27017
9. 设置用户名密码
mongo 192.168.42.111:27017
-
切换到admin(设置密码需要切换到admin库)
db.createUser( { user: "fisher", pwd: "fisher3652",roles:[{role:"root",db:"admin"}]})
10. 关闭mongo
-
一定不能使用kill -9 <pid> 进行关闭
,否则启动时会报如下错误
child process failed, exited with error number 48
因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。
-
在admin库下使用shutdownServer命令
use admin
db.shutdownServer()
-
使用shutdown命令
-
kill
11. 使用用户名密码登录
mongod --auth -f mongodb/conf/mongodb.conf
mongo -host 192.168.42.115 -u fisher
-
这里使用授权模式登录,可以在配置文件中添加如下配置并重新启动,下次启动时可以不带
--auth
security:
authorization: enabled
12. 配置开机自启动
-
创建mongodb.service,并添加下面配置,注意切换mongo目录为实际存放的文件路径
vi /usr/lib/systemd/system/mongodb.service
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
RuntimeDirectory=mongodb
PIDFile=/usr/local/soft/mongodb/data/db/mongod.lock
ExecStart=/usr/local/soft/mongodb/bin/mongod -f /usr/local/soft/mongodb/conf/mongodb.conf
ExecStop=/usr/local/soft/mongodb/bin/mongod --shutdown -f /usr/local/soft/mongodb/conf/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
-
使配置生效,重启服务器后,会发现mongo自动启动
systemctl daemon-reload
systemctl start mongodb
systemctl enable mongodb
service mongodb stop
service mongodb start