mongodb数据丢失怎么办
mongodb数据丢失后采用增加mongo数据库的auth权限进行解决。
增加了auth权限之后,设置了用户名和密码,重启node,发现如下错误!
2017-01-02T07:29:07.626753+00:00 app[web.1]: MongoError: auth failed
2017-01-02T07:29:07.626756+00:00 app[web.1]: at Object.toError (/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js:114:11)
2017-01-02T07:29:07.626758+00:00 app[web.1]: at /app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1156:31
2017-01-02T07:29:07.626759+00:00 app[web.1]: at /app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1890:9
2017-01-02T07:29:07.626760+00:00 app[web.1]: at Server.Base._callHandler
(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:448:41)
2017-01-02T07:29:07.626762+00:00 app[web.1]: at /app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:481:18
2017-01-02T07:29:07.626763+00:00 app[web.1]: at MongoReply.parseBody
(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
2017-01-02T07:29:07.626766+00:00 app[web.1]: at null.<anonymous>
(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:201:13)
2017-01-02T07:29:07.626765+00:00 app[web.1]: at emit (events.js:95:17)
2017-01-02T07:29:07.626764+00:00 app[web.1]: at null.<anonymous>
(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:439:20)
2017-01-02T07:29:07.626767+00:00 app[web.1]: at emit (events.js:98:17)
2017-01-02T07:29:07.413053+00:00 app[web.1]: Listen the port 11221
2017-01-02T07:29:07.623584+00:00 app[web.1]: /app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:246
2017-01-02T07:29:08.438433+00:00 heroku[web.1]: Process exited with status 8
这是因为mongodb 3.0的用户机制改变了,数据库账户需要重新设置一下。
具体方法如下:
方法一:
shell进入mongo,use admin,创建admin账户3.0创建新用户方法 db.createUser,具体可查看官方文档
use admin db.createUser( { user: "root", pwd: "password", roles: [ { role: "dbOwner", db: "你的数据库名字" } ] } )
创建一个超级管理员账号,
这个root就可以操作你的数据库了!
方法二:
首先关闭 auth权限
然后
use 你的数据库表名 db.createUser( { user: "root", pwd: "password", roles: [ { role: "dbOwner", db: "你的数据库名字" } ] } )
创建针对你数据库的用户名和密码。
然后:
进入到你的数据库表,use "你的数据库表" 验证刚才创建的root 账户
db.auth(‘root’,‘pwd’)//成功连接
重启mongodb,开启auth=true;(开启–auth)
重启mongodb数据库。首先关闭数据库:
killall mongod
然后启动!
mongodb数据库重启之后,重启nodejs,发现还是会报错误!错误如下
throw new Error('invalid schema, expected mongodb'
经过查询,然后升级了一下mongodb和schema等等,然后在重启nodejs,发现可以启动了!因此,mongo数据库博客安全性修改完毕。
来源:PY学习网:原文地址:https://www.py.cn/article.html