ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

CentOS7安装配置MongoDB4.4.4踩坑

2021-03-24 22:29:08  阅读:503  来源: 互联网

标签:MongoDB4.4 mongo admin mongodb 数据库 CentOS7 conf 创建 安装


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之后成功解决。

标签:MongoDB4.4,mongo,admin,mongodb,数据库,CentOS7,conf,创建,安装
来源: https://blog.csdn.net/qq_43445362/article/details/115188768

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有