第一种方式:通过Robo设置
连接mongo,在admin库下创建账号,设置账号、密码后,勾选角色。
找到 MongoDB 安装目录,打开 mongod.cfg
文件,找到以下这句:
#security:
修改为:
security:
authorization: enabled
重启 MongoDB服务
第二种方式:通过命令设置超级管理员
设置 admin
use admin db.createUser({ user: ‘admin‘, // 用户名 pwd: ‘123456‘, // 密码 roles:[{ role: ‘root‘, // 角色 db: ‘admin‘ // 数据库 }] })
设置完成,可以输入 show users
查看是否设置成功。
开启验证
找到 MongoDB 安装目录,打开 mongod.cfg
文件,找到以下这句:
#security:
修改为:
security:
authorization: enabled
重启 MongoDB
打开任务管理器
找到 MongoDB 服务,右键重新启动。
这时,我们可以打开 powershell 连接数据库:
输入 mongo:
显示连接成功,但是当我们输入其他指令时,会提示没有权限:
登录数据库
// 方式一 mongo use admin db.auth(‘admin‘, ‘123456‘) // 方式二 mongo admin -u admin -p 123456
这时候我们就可以正常访问和操作数据了。
添加数据库用户
我们除了可以设置数据库的超级管理员以外,还可以给每个数据库设置单独的管理员。其只有操作单独数据的一定权限。
use test // 跳转到需要添加用户的数据库 db.createUser({ user: ‘fooadmin‘, // 用户名 pwd: ‘123456‘, // 密码 roles:[{ role: ‘readWrite‘, // 角色 db: ‘test‘ // 数据库名 }] })
常用命令
show users // 查看当前库下的用户 db.dropUser(‘testadmin‘) // 删除用户 db.updateUser(‘admin‘, {pwd: ‘654321‘}) // 修改用户密码 db.auth(‘admin‘, ‘654321‘) // 密码认证
MongoDB 数据库默认角色
- 数据库用户角色:read、readWrite
- 数据库管理角色:dbAdmin、dbOwner、userAdmin
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复角色:backup、restore
- 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase - 超级用户角色:root
备注:MongoDB连接数据库
启动 MongoDB 服务
通过 shell 连接 MongoDB 服务:mongo
使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上:mongo://admin:123456@localhost/
更多连接实例
连接本地数据库服务器,端口是默认的。
mongodb://localhost
使用用户名fred,密码foobar登录localhost的admin数据库。
mongodb://fred:foobar@localhost
使用用户名fred,密码foobar登录localhost的baz数据库。
mongodb://fred:foobar@localhost/baz
连接 replica pair, 服务器1为example1.com服务器2为example2。
mongodb://example1.com:27017,example2.com:27017
连接 replica set 三台服务器 (端口 27017, 27018, 和27019):
mongodb://localhost,localhost:27018,localhost:27019
连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。
mongodb://host1,host2,host3/?slaveOk=true
直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器。
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。
安全模式连接到localhost:
mongodb://localhost/?safe=true
以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000