目录
摘要
建立管理员,建立一般用户,授权,删除用户
账号管理
概述
- mongodb 没有默认管理员账号。
- 切换到 admin 数据库,添加的账号才是管理员账号。
- 用户只能在用户所在数据库登录,包括管理员账号。
- 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在 admin 数据库认证后才可以。
管理员
添加系统管理员账号
基本定义
需要在 admin
数据库下
db.createUser(user, writeConcern)
user 的数据格式
{ user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}
例
use admin;
db.createUser(
{
user: "siteUserAdmin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
特定数据库的管理员
格式
需要先切换到对应的数据库
use 数据库名;
db.createUser(
{
user: "用户名",
pwd: "密码",
roles:
[
{
role: "userAdmin",
db: "数据库名"
}
]
}
)
例
db.createUser(
{
user: "recordUserAdmin",
pwd: "password",
roles: [ { role: "userAdmin", db: "mydb" } ]
}
)
无限制的管理员
use admin
db.createUser(
{
user: "用户名",
pwd: "密码",
roles: [ "root" ]
}
)
一般用户
use 数据库名
db.createUser(
{
user: "用户名",
pwd: "密码",
roles: [
{
role: "read", #or "readWrite"
db: "数据库名"
}
]
}
)
启用权限验证
配置文件
auth=true
或
mongod --auth
注意修改权限后需要重新启动服务器
授权
用户只能在用户所在数据库登录,管理员需要通过 admin 认证后才能管理其他数据库
启动时指定
mongo -u user1 -p psw --authenticationDatabase mydb
启动后指定
use 数据库名;
db.auth("用户名", "密码")
删除用户
直接操作数据库 db.system.users
。