CentOS7安装配置MongoDB4.4.4踩坑

1、下载安装MongoDB

可以参考菜鸟教程的安装步骤,直到完成创建数据库目录那一步

https://www.runoob.com/mongodb/mongodb-linux-install.html

2、配置mongodb.conf

到上一步虽然启动了mongo服务,但只能在本地访问,需要修改配置文件使得可以远程访问。配置文件如果用tar安装的话,mongodb4.4.4似乎没有初始的conf文件,需要自己创建,然后写入内容如下:

# 创建conf文件
vim /etc/mongodb.conf
# mongodb.conf
dbpath=/var/lib/mongo	# 数据库存储目录
logpath=/var/log/mongodb/mongod.log	  # 日志文件目录
port=27017	
logappend=true
fork=true
bind_ip = 0.0.0.0 	# 设置为0.0.0.0以开启远程访问
auth=true   # 需要身份验证

创建完成以后,我们需要关闭原本的mongo服务,然后用新的配置文件去重启之:

# 关闭mongodb
mongod -f /etc/mongodb.conf --shutdown
# 使用配置文件启动mongodb
mongod -f /etc/mongodb.conf

到这里mongo服务应该正常启动,接下来到firewall中开启27017端口,就可以从远程访问。

3、创建用户,并设置密码和权限

(1)创建admin数据库和用户

# 从终端进入mongo shell
[root@localhost]# mongo
# 创建admin
> use admin # 进入admin数据库
> db.createUser(
     {
       user: "admin",
       pwd: "adminpwd",
       roles:[{role:"root",db:"admin"}]
     }
  )

(2)创建普通数据库和用户

# 创建数据库
> use testdb # 创建testdb数据库
> db.createUser(
     {
       user: "name",
       pwd: "yourpwd",
       roles:[{role:"dbOwner",db:"testdb"}]
     }
  )

这些是mongodb的用户权限:

  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)

踩坑:之前根据一般的创建用户教程,我尝试了readWrite、dbAdmin等用户权限,发现客户端上的数据库可视化管理工具(比如NoSQLBooster for MongoDB等)无法对数据库内容进行查询等操作,同时,用pymongo去连接并且插入数据时也会报错Not authorized,最后将role中的权限换成dbOwner之后成功解决。

上一篇:Centos 7 安装mongo、配置、开机启动、远程连接


下一篇:Mongo开启用户认证