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.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
启动 MongoDB 服务默认是没有账号密码的,即连接上即可进行各种操作。
但是我们在启动配置文件中,指定了 auth=true
,即开启了认证,所以链接后需要认证才能执行操作。默认情况下,MongoDB 是没有管理员账户的,所以我们需要在 admin 数据库
中使用 db.createUser()
命令添加管理员帐号或其他角色。
5.1 内置角色
-
数据库用户角色:read、readWrite
-
数据库管理角色:dbAdmin、dbOwner、userAdmin
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
-
备份恢复角色:backup、restore
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超级用户角色:root
-
内部角色:__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开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!