bartender的安全策略不允许指定的用户执行此操作_如何在CentOS7上安装最新的MongoDB并不踩坑...

昨天在头条发的 《请不要再无条件推荐Nginx-gridfs插件访问MongoDB》就是我踩的坑之一,为了让大家少踩坑,整理这份安装文档给大家使用,节省大家宝贵时间。话不多说,开整!

系统:CentOS7.2
MongoDB:4.2.1
具体版本请参考MongoDB下载中心https://www.mongodb.com/download-center/community

bartender的安全策略不允许指定的用户执行此操作_如何在CentOS7上安装最新的MongoDB并不踩坑..._第1张图片

主站最新稳定版4.2.1

一、安装系统基础依赖包

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

bartender的安全策略不允许指定的用户执行此操作_如何在CentOS7上安装最新的MongoDB并不踩坑..._第2张图片

安装MongoDB最新版本

3、启动并配置MongoDB

启动

systemctl start mongod

有三条诸如下面的警告

40365a1f09e07eca0038718ae04739ae.png

警告

解决方法如下

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,如下图

b5729df028efed1c4845e031ea4ccda8.png

修改grub文件

然后用如下命令重新生成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

修改为如下,主要是画红线的部分,其他不动

bartender的安全策略不允许指定的用户执行此操作_如何在CentOS7上安装最新的MongoDB并不踩坑..._第3张图片

启动文件修改

重启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

3a486f353c6d25daa7b071230b7562f3.png

修改默认IP及端口

如果要修改默认的数据存储位置,请修改如下标红的位置

bartender的安全策略不允许指定的用户执行此操作_如何在CentOS7上安装最新的MongoDB并不踩坑..._第4张图片

修改数据存储位置

修改完毕后要重新启动MongoDB,重新启动或关闭MongoDB 不要使用kill命令,除了使用systemctl命令外,如必须使用命令行关闭MongoDB请参考如下正确方法

通过shell连上服务器:

>use admin

>db.shutdownServer()

到此,不采坑的CentOS7上安装最新的MongoDB方法就介绍到这里了。

原创文章辛苦,欢迎大家关注,点赞,转发。

你可能感兴趣的:(centos7修改时间,centos安装mongodb,mongodb创建用户名和密码)