作者:保证能运行,运行不了评论留言。每日必看csdn,解答。作者踩了无数坑。。。。。
一·设置数据库管理员
1打开cmd
2.cd到 安装路径(…\Mongodb\bin)
3.输入mongo.exe,启动
4.输入use admin 切换到admin数据库
5.输入 db.createUser({user:“myAdmin”,pwd:“123456”,roles:[{role:“userAdminAnyDatabase”,db:“admin”}]})
就创建了一个管理员账户 myAdmin 123456
6.输入db.auth({user: “myAdmin”, pwd: “12345”}) 返回1成功
二.修改配置文件
还是安装目录下,用编辑器打开mongod.cfg,取消 security的注释,修改成:
security:
authorization: enabled。
注意写法 上面一种不行,:与enabled之间有空格,如何服务启动不了就是这个问题。
使用如下命令重启MongoDB服务:
net stop Mongodb
net start Mongodb
再次连接数据库就需要账户和密码验证了。
三·针对具体数据库创建账户、密码
1.使用use 自己想要添加的数据库 例如
use list 切换到list数据库中
2.运行 db.createUser({user:“xxx”,pwd:“123”,roles:[{role:“readWrite”,db:“admin”}]}) 这里的db:admin是知道某个数据库
给list数据库创建了xxx
四.常用命令
注意:如果进入安全模式下面的命令有些用不了,请删除之前的配置那一项.security
show dbs 查看数据库
use xxx 进入xxx数据库
show users 查看当前数据库用户权限
db.createUser({user:“xxx”,pwd:“123”,roles:[{role:“readWrite”,db:“test”}]}) 创建xxx用户,密码为123到test数据库
db.changeUserPassword(“xxx”,“123456”); 修改xxx用户密码为123456
db.updateUser(“xxx”,{pwd:“123456”});
db.updateUser(“xxx”,{roles:[ {role:“read”,db:“test”} ]}) 修改用户权限
注:updateuser它是完全替换之前的值,如果要新增或添加roles而不是代替它
则使用方法: db.grantRolesToUser() 和 db.revokeRolesFromUser()
db.dropUser(‘xxx’) 删除xxx用户,注意要先进入某个数据库
权限详解
内建角色:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色: backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色: root; 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色: __system;