Mongodb warning:Access control is not enabled for the database.

好久没有用mogodb,今天window+R,执行mongod ,出了几个warning

Mongodb warning:Access control is not enabled for the database._第1张图片
mongod.png

意思分别为
1.mogo需要建立权限(出现这个警告的原因是新版本的MongDB为了让我们创建一个安全的数据库
必须要进行验证 );
2.执行mongod 需要增加可响应的地址(这点根据提示执行 mongod --bind_ip 127.0.0.1即可 )

接下来的问题是,怎么建立权限(我是windows系统)

  1. 先打开一个命令窗口a(window+R,),执行 mongod
  2. 再打开一个命令窗口b,执行mongo,
    出现 ‘>’这个符号后(如下图红框的箭头),可以进行增加用户权限操作,
    Mongodb warning:Access control is not enabled for the database._第2张图片
    mongod2.png

创建管理员

分别执行如下操作(窗口b)

use admin

db.createUser(
  {
    user: "admin", //用户名
    pwd: "admin", //密码
    roles: [ { role: "root", db: "admin" } ] //权限
  }
)

回到窗口a,执行如下操作

ctrl+c //结束打开的mogod
mongod --bind_ip 127.0.0.1 --auth  //--auth 使用权限

为了验证下是否成功可以再命令窗口b中,退出当前操作(ctrl + c),输入

mongo --port 27017 -u "admin" -p "admin" --authenticationDatabase "admin"

会出现如下界面


Mongodb warning:Access control is not enabled for the database._第3张图片
db3.png

在箭头后面输入

db.auth('admin','admin');

返回1即为链接成功建立。

或者使用mongoose(链接node 和mongodb的桥梁 )建立链接

npm i mongoose -S
const mongoose = require('mongoose');
const url = 'mongodb://127.0.0.1:27017/admin';
const  option = {
    socketTimeoutMS: 45000,
    keepAlive: true,
    reconnectTries: 10,
    auto_reconnect: true,
    useNewUrlParser: true,
    user: 'admin',
    pass: 'admin'
};

exports.connect=()=>{
    mongoose.connect(url, option);
    const db = mongoose.connection;
    db.on('open',()=>{
        console.log('mongoDB connected successfully!');
    })
    db.on('disconnected',()=>{
        console.log('disconnected');
    })
    db.on('error',(err)=>{
        console.log(err);
    });
}

参考

  1. # MongoDB: Server has startup warnings ''Access control is not enabled for the database''
  2. MongoDB 3.4.2 添加用户、设置权限

你可能感兴趣的:(Mongodb warning:Access control is not enabled for the database.)