一、用户与权限管理
1.常用权限
2.创建管理用户
MongoDB有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。
管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userAdminAnyDatabase 角色即可。另外管理员账户必须在admin数据库下创建。
由于用户被创建在哪个数据库下,就只能在哪个数据库登录,所以把所有的用户都创建在admin数据库下。这样我们切换数据库时就不需要频繁的进行登录了。
先 use admin 切换至admin 数据库进行登录,登录后再use切换其他数据库进行操作即可。第二次的 use就不需要再次登录了。MongoDB设定use第二个数据库时如果登录用户权限比较高就可以直接操作第二个数据库,而不需要登录。
> show dbs
> use admin
> show users
> db.createUser({
... user:"uaad",
... pwd:"uaad",
... roles:[ {
... "role":"userAdminAnyDatabase",
... "db":"admin"
... }] }
... )
> show users
·user:用户名
·pwd:密码
·customData:存放用户相关的自定义数据,该属性也可忽略
·roles:数组类型,配置用户的权限
开启身份验证并重启服务:
- 管理员账户创建完成以后,需要重新启动MongoDB,并开启身份验证功能。
- 便用认证函数 db.auth(“用户名”,”密码”)进行身份认证。返回结果1,则表示认证成功,返回0则表示认证失败。
- 登录成功以后即可进行该用户所拥有的角色对应的权限的其他操作,比如 show dbss再次查看所有数据库信息。
[root@sql ~]# vim /usr/local/mongodb/bin/mongodb.conf
#开启身份验证功能
auth = true # authorization 的缩写
[root@sql ~]# mongod -f /usr/local/mongodb/bin/mongodb.conf --shutdown
[root@sql ~]# mongod -f /usr/local/mongodb/bin/mongodb.conf
[root@sql ~]# mongo
> show dbs # 没有登录查看不到信息
> use admin # 只能到 admin 数据库下登录用户
switched to db admin
> db.auth("uaad","uaad")
1 # 返回1登录成功,返回0登录失败
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
3.创建普通用户
需求:创建一个test数据库,给这个数据库添加一个用户,用户名为testuser,密码为123456。并授予该用户对test数据库的读写操作权限。
1.管理员登录数据库
普通用户需要由管理员用户创建,所以先便用管理员用户登录数据库。
> use admin
switched to db admin
> db.auth("uaad","uaad")
1
2.创建数据库
MongoDB没有特定创建数据库的语法,在便用use切换数据库时,如果对应的数据库不存在则直接创建并切换。
> use test
switched to db test
3.创建用户
> db.createUser({user:"testuser",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
"user" : "testuser",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
4.更新用户
1.更新角色
如果我们需要对已存在的用户进行角色修改,可以使用 db.updateUser()函数来更新用户角色。注意:执行该函数需要当前用户具有 userAdmin 或 userAdminAnyDatabse 或 root 角色。
db.updateUser("用户名",{"roles":[{"role”:"角色名称",db:"数据库”},{"更新项2":"更新内容"}]})
比如给刚才的 uaad 用户再添加 readWriteAnyDatabase 和 dbAdminAnyDatabase 权限。
> db.updateUser("uaad", {"roles":[{"role":"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"}]})
> show users
{
"_id" : "admin.uaad",
"userId" : UUID("b6532586-b403-4cb0-9a10-a0c84ee8ce9e"),
"user" : "uaad",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
},
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
2.更新密码
更新用户密码有以下两种方式,更新密码时需要切换到该用户所在的数据库。注意:需要使用具有 userAdmin或 userAdminAnyDatabse 或 root 角色的用户执行:
- 使用 db.updateUser (“用户名”, {“pwd”:”新密码”}) 函数更新密码
- 便用 db.changeUserPassword (“用户名”, “新密码”) 函数更新密码
5.删除用户
通过 db.dropUser()函数可以删除指定用户,删除成功以后会返回true。删除用户时需要切换到该用户所在的数据库。注意:需要使用具有 userAdmin 或 userAdminAnyDatabse 或 root 角色的用户才可以删除其他用户。
> use admin
switched to db admin
> db.auth("uaad","uaad")
1
> use test
switched to db test
> show users
{
"_id" : "test.testuser",
"userId" : UUID("ae6e219d-3c1c-41ba-a8d6-1ab6724dd480"),
"user" : "testuser",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
> db.dropUser("testuser")
true
> show users
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74632.html