Linux CentOS7 环境下安装 MongoDB

about to fork child process, waiting until server is ready for connections.

forked process: 1566

child process started successfully, parent exiting

[root@chenpi mongodb]#

3.7 验证,使用安装目录下 bin 目录的 mongo 客户端命令连接和访问 MongoDB,默认会链接到 test 数据库。

[root@chenpi mongodb]# mongo

MongoDB shell version v4.0.27

connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb

Implicit session: session { “id” : UUID(“938c27a8-49e4-4617-97bb-7e1fd933d6ac”) }

MongoDB server version: 4.0.27

Welcome to the MongoDB shell.

For interactive help, type “help”.

For more comprehensive documentation, see

http://docs.mongodb.org/

Questions? Try the support group

http://groups.google.com/group/mongodb-user

db

test

4 其他配置



4.1 开放端口

CentOS 7 版本对防火墙进行了加强,不再使用原来的 iptables,而是启用 firewall 。默认情况下,不开放任何端口。所以如果需要对外开发 MongoDB 服务,那么需要开放 MongoDB 的端口 。

开放27017端口

[root@chenpi mongodb]# firewall-cmd --zone=public --add-port=27017/tcp --permanent

success

让配置生效

[root@chenpi mongodb]# firewall-cmd --reload

success

查看开放的端口,验证是否成功

[root@chenpi mongodb]# firewall-cmd --zone=public --list-ports

6380/tcp 27017/tcp

[root@chenpi mongodb]#

4.2 检查服务状态

查看 mongodb 进程状态

[root@chenpi mongodb]# ps aux | grep mongo

root 1566 1.6 6.4 1099452 64240 ? Sl 15:39 0:11 mongod -f /usr/local/mongodb/mongodb.conf

root 1693 0.0 0.0 112812 972 pts/0 R+ 15:49 0:00 grep --color=auto mongo

检查端口是否启动

[root@chenpi mongodb]# netstat -lanp | grep 27017

tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1566/mongod

tcp 0 0 172.22.17.128:27017 172.22.16.99:7424 ESTABLISHED 1566/mongod

tcp 0 0 172.22.17.128:27017 172.22.16.99:7425 ESTABLISHED 1566/mongod

unix 2 [ ACC ] STREAM LISTENING 22369 1566/mongod /tmp/mongodb-27017.sock

[root@chenpi mongodb]#

如果 netstat 命令没有找到,先进行安装。

yum install -y net-tools

4.3 停止服务

通过进程ID杀死

kill -9 PID

通过mongod命令关闭mongodb服务

[root@chenpi mongodb]# mongod -f /usr/local/mongodb/mongodb.conf --shutdown

killing process with pid: 1566

[root@chenpi mongodb]#

4.4 开机自启动

使用 vi /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 -f /usr/local/mongodb/mongodb.conf --shutdown

PrivateTmp=true

[Install]

WantedBy=multi-user.target

然后依次执行以下4个命令,使之生效。

启动 mongodb

[root@chenpi mongodb]# systemctl start mongodb.service

查看服务状态

[root@chenpi mongodb]# systemctl status mongodb.service

● mongodb.service - mongodb

Loaded: loaded (/usr/lib/systemd/system/mongodb.service; disabled; vendor preset: disabled)

Active: active (running) since Sun 2021-10-10 15:56:30 CST; 5s ago

Process: 1744 ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf (code=exited, status=0/SUCCESS)

Main PID: 1746 (mongod)

CGroup: /system.slice/mongodb.service

└─1746 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

Oct 10 15:56:29 chenpi systemd[1]: Starting mongodb…

Oct 10 15:56:29 chenpi mongod[1744]: about to fork child process, waiting until server is ready for connections.

Oct 10 15:56:29 chenpi mongod[1744]: forked process: 1746

Oct 10 15:56:30 chenpi systemd[1]: Started mongodb.

Oct 10 15:56:30 chenpi mongod[1744]: child process started successfully, parent exiting

开机自启动

[root@chenpi mongodb]# systemctl enable mongodb.service

Created symlink from /etc/systemd/system/multi-user.target.wants/mongodb.service to /usr/lib/systemd/system/mongodb.service.

修改 mongodb.service文件时,重新加载文件

[root@chenpi mongodb]# systemctl daemon-reload

[root@chenpi mongodb]#

4.5 启动重启停止服务

systemctl start mongodb.service

systemctl restart mongodb.service

systemctl stop mongodb.service

5 用户角色和密码



启动 MongoDB 服务默认是没有账号密码的,即连接上即可进行各种操作。

但是我们在启动配置文件中,指定了 auth=true,即开启了认证,所以链接后需要认证才能执行操作。默认情况下,MongoDB 是没有管理员账户的,所以我们需要在 admin 数据库中使用 db.createUser() 命令添加管理员帐号或其他角色。

5.1 内置角色

  1. 数据库用户角色:read、readWrite

  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin

  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

  4. 备份恢复角色:backup、restore

  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  6. 超级用户角色:root

  7. 内部角色:__system

5.2 创建管理员账号

切换到 admin 数据库,使用以下命令创建管理账号,拥有操作所有数据库权限。

use admin

switched to db admin

db.createUser({user:“admin”,pwd:“123456”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})db.createUser({user:“admin”,pwd:“123456”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})

Successfully added user: {

“user” : “admin”,

“roles” : [

{

“role” : “userAdminAnyDatabase”,

“db” : “admin”

}

]

}

5.3 验证

使用 mongo 命令连接上之后,如果不进行 db.auth("用户名","密码") 进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。注意,每一个用户都需要在创建这个用户的认证库下进行认证。

use adminuse admin

switched to db admin

db.auth(“admin”,“123456”)

1

show tablesshow tables

system.users

system.version

5.4 演示对单个数据库创建用户和密码

平常开发中,一般新项目会创建新的数据库,而且创建一个新的数据库用户仅对此数据库进行读写。

以下演示创建 chenpi 用户,密码为123456,并设置对 nobody 数据库读写的权限。注意,创建新用户前,先使用 admin 用户登录,因为我们刚才为 admin 用户设置了 userAdminAnyDatabase 权限。

先使用有创建用户权限的用户登录

use admin

switched to db admin

db.auth(“admin”,“123456”)

1

新用户的认证库

use nobody

switched to db nobody

创建chenpi用户,密码123465,对nobody数据库有读写权限

db.createUser({user:‘chenpi’,pwd:‘123456’,roles:[{role:‘readWrite’,db:‘nobody’}]})

Successfully added user: {

“user” : “chenpi”,

“roles” : [

{

“role” : “readWrite”,

“db” : “nobody”

}

]

}

5.5 可视化工具连接

我们使用 MongoDB 可视化工具(例如 Studio 3T For MongoDB)连接数据库。使用不同用户名和密码进行登录的时候,其可操作的数据库范围是不同的(角色设置原因)。

注意,当连接的数据库启动没有设置用户认证时,连接时不需要填写用户名和密码。

在这里插入图片描述

在这里插入图片描述

我们使用 chenpi 用户登录,因为我们设置它的角色是只对 nobody 数据库有读写权限,所以连接后只能看到 nobody 数据库。

在这里插入图片描述

当然,如果我们使用 admin 用户登录,注意,admin 用户当时是在 admin 数据库创建的,所以它的认证库是在 admin。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
索成长,自己不成体系的自学效果低效漫长且无助。**

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-BPQgepiK-1715797319338)]

[外链图片转存中…(img-6Cxe8N5m-1715797319339)]

[外链图片转存中…(img-02guxu6J-1715797319339)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值