压缩包安装方式
通过wget下载Linux版本的MongoDB
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz
将压缩包解压到要安装的目录
tar -xvzf mongodb-linux-x86_64-rhel62-3.4.3.tgz -C /usr/local
通过 list 命令,可以查看解压的结果
ls /usr/local/
可以看到 MongoDB 解压的名字很长,我们修改简短一些方便后续操作
mv mongodb-linux-x86_64-rhel62-3.4.3 mongodb
在安装目录下创建data文件夹用于存放数据和日志,数据存放在data的子目录文件夹db中,日志存放在与db同级目录的logs文件夹中
mkdir -p /usr/local/data/{db,logs}
#其他用户看需使用 chmod 命令修改访问权限:文件创建默认权限 644,文件夹创建默认权限 755
在logs文件夹中创建log文件
touch /usr/local/mongodb/data/logs/mongodb.log
在mongodb文件夹中创建mongodb.conf配置文件
vim /usr/local/mongodb/mongodb.conf
写入以下配置
#端口号
port = 27017
#数据存放目录
dbpath = /usr/local/mongodb/data/db
#日志存储目录
logpath = /usr/local/mongodb/data/logs/mongodb.log
#设置以守护进程后台运行
fork = true
#日志输出方式
logappend = true
#开启认证
#auth = true
#远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0
#turn on simple rest api
rest=true
#开启28017端口图形化访问(出于安全问题,MongoDB3.0+版本开启认证之后不再允许访问)
httpinterface=true
#PID FILE的完整路径,如果没有设置,则无PID文件
#pidfilepath=/usr/local/mongodb/mongodb.pid
#更多参数配置详情参见 mongodb官方使用手册
配置系统环境变量
vim /etc/profile
在文件尾部追加以下代码
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:MONGODB_HOME/bin
保存退出后使用以下命令使配置生效
source /etc/profile
启动MongoDB数据库
mongod -f /usr/local/mongodb/mongodb.conf
[root@recommend ~]# mongod -f /usr/local/mongodb/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 1954
child process started successfully, parent exiting
可以查看mongodb在后台的具体情况
#以下几条命令均可查看MongoDD服务状态
[root@recommend ~]# pgrep -a mongod
1954 mongod -f /usr/local/mongodb/mongodb.conf
[root@recommend ~]# ps aux | grep mongod | grep -v grep
root 1954 1.1 2.2 318396 41784 ? Sl 09:27 0:10 mongod -f /usr/local/mongodb/mongodb.conf
[root@recommend db]# lsof -i:27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 2737 root 7u IPv4 35702 0t0 TCP *:27017 (LISTEN)
[root@recommend db]# netstat -lanp | grep 27017 | grep -v grep
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2737/mongod
unix 2 [ ACC ] STREAM LISTENING 35703 2737/mongod /tmp/mongodb-27017.sock
若要想通过浏览器访问,远程连接MongoDB服务,则需要配置防火墙开放端口
#开放27017端口、28017端口
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --zone=public --add-port=28017/tcp --permanent
# 使配置生效
firewall-cmd --reload
# 查看开放端口操作是否成功
firewall-cmd --zone=public --list-ports
现在可以在浏览器中输入你所使用的主机IP地址+端口号27017查看web访问连通性,例如
http://192.168.133.130:27017
可以得到以下访问结果
It looks like you are trying to access MongoDB over HTTP on the native driver port.
在浏览器中输入你所使用的主机IP地址+端口号28017可看到MongoDB具体使用的详情
http://192.168.133.130:28017
但是这种方式出于安全性问题,已不再被支持使用。所以当我们给数据库开启认证之后,再次访问将会出现 not allowed 提示。
关闭MongoDB服务,
# 通过kill命令杀死mongodb服务
kill -9 PID
# 通过mongod命令关闭mongodb服务
mongod -f /usr/local/mongodb/mongodb.conf --shutdown
默认情况下,MongoDB是没有管理员账户的,登录进去会默认为root用户,很不安全。所以在配置文件中,将数据库认证开启,同时将28017端口及其他相似端口访问权限都取消掉。启动MongoDB服务
vim /usr/local/mongodb/mongodb.conf
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/data/logs/mongodb.log
fork=true
logappend=true
auth=true
port=27017
bind_ip=0.0.0.0
#rest=true
#httpinterface=true
mongod -f /usr/local/mongodb/mongodb.conf
使用MongoDB自带的交互式JavaScript Shell 验证连接和访问MongoDB,使用mongo命令,登入MongoDB Shell,默认连接 test 数据库
[root@recommend ~]# mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
>
我们先创建管理员账号admin,其拥有操作所有数据库的权限。这项操作必须在 admin 数据库中执行
> use admin
switched to db admin
使用如下命令创建账户
db.createUser(
{user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}
)
使用mongo命令进入mongo命令模式,如果不进行 db.auth(“用户名”,“密码”) 进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。换句话说:如果没有身份验证,可以访问MongoDB shell,但不允许连接到数据库。
> use admin
switched to db admin
> show tables;
2021-05-19T19:16:39.921+0800 E QUERY [thread1] Error: listCollections failed: {
“ok” : 0,
“errmsg” : “not authorized on admin to execute command { listCollections: 1.0, filter: {} }”,
“code” : 13,
“codeName” : “Unauthorized”
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:805:1
DB.prototype.getCollectionInfos@src/mongo/shell/db.js:817:19
DB.prototype.getCollectionNames@src/mongo/shell/db.js:828:16
shellHelper.show@src/mongo/shell/utils.js:754:9
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1
> db.auth(“admin”,“123456”)
1
> show tables;
system.users
system.version
在admin 数据库认证之后,可以通过以下命令来关闭MongoDB服务
> db.shutdownServer();
设置开机自启及快捷管理方式
方式一
在 /lib/systemd/system/ 路径下创建开机配置文件
vim /lib/systemd/system/mongodb.service
输入以下内容:
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
保存退出后执行该命令,使其生效
source /lib/systemd/system/mongodb.service
后续便可以通过以下命令来操作MongoDB了
# 启动mongodb
systemctl start mongodb.service
# 查看服务状态
systemctl status mongodb.service
# 开机自启动
systemctl enable mongodb.service
# 修改mongodb.service文件,需要重新加载文件
systemctl daemon-reload
方式二
在 /etc/rc.d/init.d/ 路径下创建MongoDB系统服务mongod
vim /etc/rc.d/init.d/mongod
start() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
}
stop() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
}
status(){
/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo
$"Usage: $0 {start|stop|status|restart}"
exit 1
esac
保存之后对脚本添加执行权限
chmod +x /etc/rc.d/init.d/mongod
之后便可以使用命令来快速操作MongoDB服务了
#启动
service mongod start
#关闭
service mongod stop
#重启
service mongod restart
#查看状态
service mongod status
总的来说,我还是觉得使用 yum 安装或者 rpm 安装更简单便捷些~