mongodb安装与权限配置

mongodb下载地址:官方下载
IDE工具:Robo 3T:官方下载redis

windows系统要求64位,最低2g内存,推荐8g内存及以上mongodb

安装过程没有须要配置的地方,直接下一步到结束,若是想要方即可以在环境变量中Path追加mongodb安装文件的bin目录数据库

在想要保存数据库的盘符新建文件夹mongodb 包含两个子文件夹 data和log及一个mongod.cfg文件,log文件夹新建文本改成mongo.logwindows

 

其中mongod.cfg文件内容以下(本人用虚拟机只有一个C盘):服务器

dbpath=C:\mongodb\data
logpath=C:\mongodb\log\mongo.log
logappend=true
directoryperdb=true
auth=false
#port=55600app

#表示忽略该行,本示例没有使用自定义端口,将采用默认端口27017,若是设置了端口号 ,以后链接mongo都须要指定服务器和端口号工具

 

以管理员身份运行命令提示符,若是已经配置过环境变量,直接运行 mongod,不然须要移动到mongodb安装目录的bin文件夹再执行mongod3d

若是报如下异常rest

可去 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145 下载vc_redist.x64.exe安装便可blog

 

执行如下命令建立并开启MongoDB服务(须要管理员权限)

sc create MongoDB binPath= "C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe --config=C:\mongodb\mongod.cfg --service"

net start MongoDB

 

接下来打开MongoDB Shell工具:在命令提示符中输入 mongo  运行(若是已经设置端口12345,此处为  mongo --port 12345)

此时的数据库是没有权限控制的,任何人均可以登陆到数据库

输入 show dbs; 显示全部数据库

输入 use admin; 使用admin数据库 分号是可选的 

输入 show collections 显示全部文档(关系型数据库中表的概念)

输入 show users 显示全部用户,当前没有任何帐户

 

接下来建立帐户,确保是在use admin的状况下:

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

db.createUser({
  user:"sa",
  pwd: "123456",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" },{ role: "read", db: "clearimg" } ]
})

注册用户登陆权限(这几个帐号是在admin数据库下,链接服务器即便有其余数据库权限也必须链接到admin)

db.auth("root","123456")

db.auth("sa","123456")

 

添加一个新的数据库 mytest,只须要对mytest数据库进行文档操做,存在则调用,不存在则建立

 在mytest数据库新建帐号test,并注册权限

db.createUser({
  user:"test",
  pwd: "123456",
  roles: [{ role: "read", db: "mytest" } ]
})

db.auth("test","123456")

 切换到admin数据库添加test2用户使其只拥有mytest数据库的read权限

use mytest
db.createUser({
  user:"test2",
  pwd: "123456",
  roles: [{ role: "read", db: "mytest" } ]
})
db.auth("test2","123456")

用show users 查看当前数据库拥有的帐户

最后用exit或者ctrl + c退出MongoDB Shell   到此为止数据库已经拥有对应的帐户,没有开启权限验证

接下来停用原有MongoDB服务(须要管理员权限)

net stop MongoDB

 

 并更新mongod.cfg文件中的auth=true,执行启动服务的指令(须要管理员权限)

 net start MongoDB

如今已经开启权限认证了,再次登陆打开MongoDB Shell ,输入show dbs,发现报异常

exit退出MongoDB Shell,改用帐号登陆服务器

mongo -u sa -p 123456 localhost:27017/admin

尝试登陆时不带数据库名,发现报权限错误

切换帐号test2登陆  分别尝试链接到admin 和mytest会发现test2能够登陆admin而不是mytest,但test2只有mytest的读取权限,操做admin数据库也是非法的

尝试用test帐号登陆mytest数据库并尝试操做其余数据库

 

备份和恢复角色:bakcup restore
全部数据库角色:

read 指定数据库的只读权限,拥有如下权限:

readWrite 拥有指定数据库的读写权限,除了具备read权限,还拥有如下权限:

read和readWrite只要就是对库中表的操做权限

dbAdmin 指定数据库的管理权限

userAdmin 指定数据库的用户管理权限

clusterAdmin 集群管理权限

readAnyDatabase 任何数据库的只读权限(和read类似)

readWriteAnyDatabase 任何数据库的读写权限(和readWrite类似)

userAdminAnyDatabase 任何数据库用户的管理权限(和userAdmin类似)

dbAdminAnyDatabase 任何数据库的管理权限(dbAdmin类似)

建立用户 db.createUser({user:"username",pwd: "pwd",roles: [ { role: "rolename", db: "dbname" },{ role: "rolename2", db: "dbname2" } ]})修改密码 db.changeUserPassword('usname','newpwd');添加角色 db.grantRolesToUser("username", [{ role: "rolename",db:"dbname"}] )删除权限 db.revokeRolesFromUser("username",[{ role: "rolename",db:"dbname"}])删除用户 db.dropUser("username")

相关文章
相关标签/搜索