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