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

Ubuntu16.04安装mongodb

MongoDB的内置角色 Built-In Roles

posted @ 2017-06-05 18:06  吴昭  阅读(464)  评论(0编辑  收藏  举报