昨天在头条发的 《请不要再无条件推荐Nginx-gridfs插件访问MongoDB》就是我踩的坑之一,为了让大家少踩坑,整理这份安装文档给大家使用,节省大家宝贵时间。话不多说,开整!
系统:CentOS7.2
MongoDB:4.2.1
具体版本请参考MongoDB下载中心https://www.mongodb.com/download-center/community
一、安装系统基础依赖包
yum install pcre-devel openssl-devel zlib-devel git
可选参数 -y 个人建议,yum或dnf安装时不要加 -y,除非你特别确定你自己安装的列表,否则还是能看一下确认一下比较好
二、安装最新版本的MongoDB
1、设置安装源
vi /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
2、安装
yum install mongodb-org
3、启动并配置MongoDB
启动
systemctl start mongod
有三条诸如下面的警告
解决方法如下
echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag
vi /etc/default/grub
在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never,如下图
然后用如下命令重新生成grub配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
如果是rhel系统这里是
grub2-mkconfig -o /boot/efi/EFI/rhel/grub.cfg
用reboot命令重启系统后,再次用命令行mongo登入MongoDB数据库就不会上面这些警告提示了,但会提示你数据库未启用访问控制
WARNING: Access control is not enabled for the database.
解决方法如下:
首先直接使用命令行mongo登入数据库
在admin数据库中创建超级管理员用户ddd,可管理所有数据库,操作如下(在MongoDB中)
> use admin
switched to db admin
> db.createUser({user: "ddd",pwd: "test123",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
> exit
引申一下创建账户的命令解释(仅为例子,请修改后使用,以下命令解释为网络抄录) db.createUser({user: "admin",pwd: "admin",roles: [ { role: "root", db: "admin" } ] })user:用户名pwd:密码db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system具体角色的功能:Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root:只在admin数据库中可用。超级账号,超级权限
修改MongoDB服务启动文件加入认证功能并重启MongoDB服务
vi /usr/lib/systemd/system/mongod.service
修改为如下,主要是画红线的部分,其他不动
重启MongoDB
systemctl daemon-reload //仅在修改过启动文件时执行这一行
systemctl restart mongod
如果启动报错,用如下命令解决
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
chown mongod:mongod /tmp/mongodb-27017.sock
rm -f /var/run/mongodb/mongod.pid
测试认证连接
mongo -uddd -ptest123 --authenticationDatabase "admin"
登陆成功即可正常操作数据库,在启动MongoDB的认证功能后,所有的数据库操作必须先进行验证,这也是官方最推荐的一种方法。
三、修改数据库默认IP和端口及数据存储位置
MongoDB在安装后默认的IP为127.0.0.1,端口是27017,为方便远程连接,可修改IP和端口,个人建议本机连接使用,只修改端口即可;外部连接使用,IP和端口都要修改。
vi /etc/mongod.conf
如果要修改默认的数据存储位置,请修改如下标红的位置
修改完毕后要重新启动MongoDB,重新启动或关闭MongoDB 不要使用kill命令,除了使用systemctl命令外,如必须使用命令行关闭MongoDB请参考如下正确方法
通过shell连上服务器:
>use admin
>db.shutdownServer()
到此,不采坑的CentOS7上安装最新的MongoDB方法就介绍到这里了。
原创文章辛苦,欢迎大家关注,点赞,转发。