Go教程

CentOS-7 下MongoDB基本配置

本文主要是介绍CentOS-7 下MongoDB基本配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

压缩包安装方式

通过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

MongoDB资源使用可视化部分截图
但是这种方式出于安全性问题,已不再被支持使用。所以当我们给数据库开启认证之后,再次访问将会出现 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"}]}
)

用户添加成功image
使用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 安装更简单便捷些~

这篇关于CentOS-7 下MongoDB基本配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!