安全和认证

mongodb和redis比较像,安全部分依赖于其所存在的环境
一定要把mongodb放在一个可信的环境下去运行,mongodb只能被web服务器所访问,禁止开外网端口访问mongodb,外网本地的web服务器通过内网端口连接mongodb。

查看Mongoodb服务器状态的命令

db.runCommand({"serverStatus":1})

用户安全

创建admin用户,可以进行全局的数据库操作

//选中数据库
use admin
//创建用户
db.createUser(
    {
      user: "admin",
      pwd: "12345678",
      roles: [
         { role: "userAdminAnyDatabase", db: "admin" }
      ]
    }
)

创建其他数据库用户,只可以进行单个数据库的操作

use taobao
db.createUser(
  {
    user: "spike",
    pwd: "spike",
    roles: [ { role: "readWrite", db: "taobao" } ]
  }
)

关闭mongodb的命令

//在客户端下
db.shutdownServer() 
//在windows命令行下
tasklist | findstr "mon"
taskkill /F /PID 3296  
//在Linux下
 kill -2 PID," or kill -15 PID

数据库启用安全验证命令

mongod --dbpath C:\MongoDb\data\db -logpath C:\MongoDB\data\log\mongolog.log --auth

重新连接数据库,然后用账户名和密码登录

use admin //验证还是在admin中验证的,验证成功再切换到别的库
db.auth('spike','112358');

linux中防火墙的问题

在Linux中安装完mongodb后,使用程序连接mongodb进行写入,会发现无法进行写入,这是因为linux默认有防火墙,需用下面命令将防火墙关闭才能进行访问

sudo ufw disable  
//在ubuntu中关闭防火墙的命令,使用这个命令后需要重启mongodb的服务,本办法就是重启服务器

总结户管理操作

首先启动mongodb的时候不加--auth选项,选择admin数据库,建立一个管理全局用户的管理员,mongoDB 没有super root,只有能管理用户的用户 userAdminAnyDatabase。
1、添加一个用户

db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读
//要让用户认证生效,需要在启动mongo服务时,指定--auth选项,下次登录时,就需要认证了

2、数据库认证、安全模式

db.auth("userName", "123123");

3、显示当前所有用户

show users;

4、删除用户

db.removeUser("userName");

5、修改用户密码

db.changeUserPassword(用户名,新密码);

6、给用户添加权限

db.addUser({user:'guanli',pwd:'1111',roles:{'readWrite,dbAdmin'}});
//这些roles的单词可以在mongo的官网或者手册上查到

7、涉及到主从切片的权限的时候

在主从复制和切片里面,有些时候会遇到权限不够的问题,尝试使用下面的方法解决问题
db.createUser(
  {
    user: "spike",
    pwd: "112358",
    roles: [  
               { role: "userAdminAnyDatabase", db: "admin" }
               { role: "readWrite", db: "taobao" },
               {  role: "read", db: "taobao" } ]
  }
)
用管理员账户登录后选择其他数据库开始对数据库创建相应权限的用户

相关图片

mongodb關閉防火墻 mongodb 安全_mongodb

mongodb關閉防火墻 mongodb 安全_mongodb_02