MongoDB用户认证配置
服务器环境
- Ubuntu Linux 16.04
- Mongo server 3.2.13
- Mongo shell 3.2.13
添加管理员账户
# 在本机终端下使用命令进入MongoDB Shell
# 默认数据端口绑定为:38028
root@meteors:~# mongo 127.0.0.1:38028
# 以下操作将会在mongo shell 中进行操作
# 切换到admin库
> use admin
switched to db admin
# 添加admin库的用户
> db.createUser({user:"root",pwd:"123456",roles:[{"role":"root","db":"admin"}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
修改配置文件
关闭mongod
root@meteors:~# service mongod stop
修改/etc/mongod.config
root@meteors:~# vi /lib/systemd/system/mongod.service
# 修改以下内容
# ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf --auth
退出vi, 然后重新加载守护程序, 开启mongod服务
root@meteors:~# systemctl daemon-reload
root@meteors:~# service mongod start
测试
# 进入mongo, 并进入admin库
root@meteors:~# mongo 127.0.0.1:38028
MongoDB shell version: 3.2.13
connecting to: 127.0.0.1:38028/test
> use admin
switched to db admin
# 测试一条命令,查看当前mongo中所包含的库
> show dbs
2017-06-05T16:48:16.249+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:761:19
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1
# 以上信息表明没有权限执行listDatabases操作
# 使用开始配置的用户名和密码进行认证
> db.auth("root","123456")
1 # 1表示认证通过, 0表示认证失败
# 在执行一下 show dbs 和show colletions,将正常展示
> show dbs
admin 0.000GB
local 0.000GB
> show collections
system.users
system.version
为其他库配置认证信息
# 为其他库配置认证信息的方法只需要先登录到admin库,并使用包含创建用户权限的账户认证后即可进行配置
# 以下语句是为test库配置认证信息
> db.createUser({user:"testadmin",pwd:"123456",roles:[{"role":"readWrite","db":"test"}]})
# 测试方法可以先退出mongo,然后在进入test库, 执行show collections语句即可验证配置是否成功
附录
关于mongodb远程访问的设置
# 修改配置文件/etc/mongod.config
vi /etc/mongod.config
# 注释代码:`bindIp: 127.0.0.1`
# bindIp: 127.0.0.1