MongoDB是一种面向文档的数据库管理系统,由C++撰写而成,以此来解决应用程序开发社区中的大量现实问题。2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。
MongoDB 一个缺点是安装后数据库都无需密码可以直接访问,安全上就给了黑客许多漏洞,教大家如何为MongoDB添加管理员,避免数据被莫名其妙清空这种操蛋事情
我本教程中做什么:
- 安装MongoDB。
- 创建管理员用户。
- 启用MongoDB身份验证和测试。
- 版本 3.6.2
- 环境 centos 7
安装
建议从官网上安装学习,我图方便从 oneinstack 安装
创建管理员用户
1、打开mongodb shell
mongo
2、切换到数据库 admin
use admin
3、新建管理员
注意:这里的管理员是没有读写任何数据库权限,只有管理 admin 数据库权限
db.createUser(
{
user: "adminfuck",
pwd: "Yangxing",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4、确保用户已经使用查询创建了
show users
在MongoDB中启用用户认证
修改mongodb的主配置文件 ,添加 --auth
nano /etc/rc.d/init.d/mongod
OPTIONS=" --auth -f $CONFIGFILE"
重新加载配置
systemctl daemon-reload
systemctl restart mongod
接下来,我们必须通过登录到mongo shell并切换到admin数据库来测试配置
mongo
use admin
show users
会报错 Error: don't know how to show [user]
我们需要使用命令'db.auth()'进行身份验证,授权成功 返回1
db.auth('adminfuck', 'Yangxing')
创建对数据库真正读写权限的用户,注意这里我们只能是 admin 数据库,因为我们在 use admin 下
db.createUser(
{
user: "test",
pwd: "yangxing123",
roles: [ { role: "readWrite", db: "admin" },
{ role: "read", db: "admin" } ]
}
)
远程测试连接字符串格式
mongodb://test:yangxing123@远程ip地址:27017/admin
如果要建其他数据库名,创建管理员,把本文中出现的 admin 替换成相应数据库名重新来一遍即可。前提要关掉数据库auth验证,我把我走的弯路记录下,希望对自己有所帮助
网友评论