MONGODB4安装后配置

发布时间 2023-06-14 10:37:03作者: 南国之恋

网上一堆旧的文章,服了。

参考 https://www.jianshu.com/p/238783312677

参考 https://blog.csdn.net/zouchangan/article/details/109324828

修改配置文档mongod.cfg(位置:安装目录\bin 下)

首先,将bind_ip改为0.0.0.0 ,binIP关乎到访问连接的限制。

 

#bindIp: 192.168.0.136 #如果修改成本机Ip,那除了本机外的机器都可以连接

#bindIp: 0.0.0.0 #改成0,那么大家都可以访问(共赢)

#bindIp: 127.0.0.1 #改成127,那就只能自己练了(独吞)

然后找到 #security:去掉#号,改成下面这样,开启安全认证。

security:
authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启
冒号后有个空格.

 

1. 创建超级用户

安装完之后,打开命令行,进入mongodb安装目录,在bin目录下执行 mongod 启动, 该模式是不需要安全认证的模式,启动后,使用可视化工具如:Robo 3T 打开shell窗口先创建一个有grant权限的用户,如root权限的用户:

use admin
db.createUser(
    {
        user: "admin",
        pwd: "admin",
        roles: [{ role: "root", db: "admin" }]
    }
)

user:用户名
pwd:密码
db:指定该用户的数据库,admin是用于权限控制的数据库,如果没有需要新建一个
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。

内置角色

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system

角色功能

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限

2. 创建所有数据库管理用户

use admin
db.createUser(
    {
        user: "manager",
        pwd: "manager",
        roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
    }
)

3. 创建单个数据库用户

use salary
db.createUser(
    {
        user: "vanhr",
        pwd: "vanhr",
        roles: [{ role: "readWrite", db: "salary" }]
    }
)

4. 测试

use salary
db.auth("vanhr", "vanhr")
db.createCollection("demo")
db.demo.insert( { name: "zhangsan", age: 18} )
db.demo.find()

查看全局所有账户

> db.system.users.find().pretty()

查看当前库下的账户

> use admin
switched to db admin
> show users

-----------

ROBO3T可以连接mongodb数据库 。。