mongodb设置账号和密码

2,674 阅读2分钟

mongodb是没有账号和密码

所以 mongodb数据库的数据是非常容易被黑的。

如何保护mongodb数据呢?

mongo链接进入mongodb命令行

首先是进入到mongodb的bin目录下

然后mongo 命令后 mongodb的命令行指令

创建管理员

db.createUser({user:"useradmin",pwd:"adminpassword",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

创建成功后,如下结果:

mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。

上边是验证管理员是否创建成功,如果返回值是1 表示创建成功。

db.auth 表示的验证的意思,一般是理解用户验证功能

exit;退出命令行

进入配置文件进行修改

sudo  vi /etc/mongod.conf

切记一定要sudo命令,并且 这一个mongodb是config.conf

操作如下:

security:
authorization: enabled #注意缩进,缩进参照配置文件其他配置。缩进错误可能第6步重启不成功。

修改配置文件成功后,重启mongodb

我这里是用宝塔安装的mongodb,所以在宝塔上重启的。

验证管理员和密码是否成功

新建账户

use yourdatabase
db.createUser({user:"youruser",pwd:"yourpassword",roles:[{role:"dbOwner",db:"yourdatabase"}]})

rote:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等。

新建数据库读写账户

use yourdatabase
db.createUser({user:"youruser2",pwd:"yourpassword2",roles:[{role:"readWrite",db:"yourdatabase"}]})

该用户用于该数据的读写,只拥有读写权限。

现在数据的用户名和密码就建好了。

可以使用:mongodb://youruser2:yourpassword2@localhost/yourdatabase来链接。

如果有账号和密码的则mongoose的连接方式如下:

如果是有账号和密码上边的方式就不对,则需要下边的方式。

mongodb://root:123456@82.157.145.147:27017/expressdemo?authSource=admin