mongodb创建用户并设置权限
一、掌握权限,理解下面4条基本上就差不多
1.mongodb是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
2.切换到admin数据库,添加的账号才是管理员账号。
3. 用户只能在用户所在数据库登录,包括管理员账号。
4. 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
二、创建用户
1. 创建管理员账号(全局账号)
Use admin //管理员账号只能在admin账户下创建 db.createUser({user:‘admin’,pwd:‘admin123’,roles:[‘userAdminAnyDatabase’,‘dbAdminAnyDatabase’]})
2. 创建数据库账号
use seeker //创建数据库 db.createUser({user:‘test’,pwd:‘test’,roles:[{role:‘dbOwner’,db:‘seeker’}]})
提示:创建用户使用命令
db.createUser(
{
user:’userName’, //用户名
pwd:’123456’, //密码
roles: [ {
role:’userAdmin’, //用户角色
db:’seeker’ //数据库名称
}
]
}
)
三、授予角色
db.grantRolesToUser(“test”,[{ role: “dbOwner”, db: “seeker” } ]) show roles //查看当前用户有哪些角色
当前数据库:
{
“role” : “dbAdmin”,
“db” : “seeker”,
“isBuiltin” : true,
“roles” : [ ],
“inheritedRoles” : [ ] } {
“role” : “dbOwner”,
“db” : “seeker”,
“isBuiltin” : true,
“roles” : [ ],
“inheritedRoles” : [ ] } {
“role” : “read”,
“db” : “seeker”,
“isBuiltin” : true,
“roles” : [ ],
“inheritedRoles” : [ ] } {
“role” : “readWrite”,
“db” : “seeker”,
“isBuiltin” : true,
“roles” : [ ],x`
“inheritedRoles” : [ ] } {
“role” : “userAdmin”,
“db” : “seeker”,
“isBuiltin” : true,
“roles” : [ ],
“inheritedRoles” : [ ]
}
在admin数据库下会多角色如下:
{
“role” : “userAdminAnyDatabase”,
“db” : “admin”,
“isBuiltin” : true,
“roles” : [ ],
“inheritedRoles” : [ ] }
下方列出系统内置角色名称
Database User Roles 普通用户角色
read
readWrite
Database Administration Roles管理员角色
dbAdmin可以管理数据库
dbOwner单数据库最大权限,dbAdmin,userAdmin
userAdmin可管理当前数据库用户
Cluster Administration Roles管理员角色
clusterAdmin
clusterManager
clusterMonitor
hostManager
Backup and Restoration Roles 备份和恢复角色
backup
restore
All-Database Roles 所有数据库角色
readAnyDatabase在admin下建立,可以读取所有数据库的信息
readWriteAnyDatabase在admin下建立,可以读写所有数据库的信息 userAdminAnyDatabase在admin下建立,可以管理所有数据库的用户 dbAdminAnyDatabase在admin下建立,可以管理所有数据库的信息(类似于所有数据库的dbAdmin账户)
Superuser Roles
root
四、授权数据库
./mongod --fork --dbpath=/data/db --logpath=/data/logs/dblogs–auth //重新启动 use seeker db.auth(‘test’,‘test’);
五、访问
本地:
./mongo seeker -u test -p test 远程 。/mongo 192.168.0.205:27017/seeker -u test -p test
提示: test数据库是默认进入的目录,如果你不想进入test数据库,mongo 后面跟上--nodb即可
附:常用命令
评论
查看更多