Mongodb 3.0 创建用户

  MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。

创建第一个用户(该用户需要有grant权限,即:账号管理的授权权限)

1.以非auth认证方式启动数据库:
[[email protected] ~]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/trace.log --logappend  --port=27017 --fork
[[email protected] ~]$ mongo
MongoDB shell version: 3.2.4
connecting to: test
> show dbs
local  0.000GB      #当前只有一个local库,admin库是不存在的
> 

2.在指定的数据库下创建用户
> use admin         #帐号是跟着库走的,所以要在指定库里创建用户,必须也在指定库里验证(auth)
switched to db admin
> db.createUser(
...    {
...  user: "dba",
...  pwd: "dba",
...  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
...    }
... );
> 

user: 用户名
pwd:  密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指
定内置角色和用户定义的角色。 role里的角色 可以选:

Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase,userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system

  

  刚建立了拥有userAdminAnyDatabase 角色的第一个用户"dba".可以通过这个角色来创建、删除用户

开启auth认证方式启动数据库

[[email protected] ~]$ mongod --dbpath=/mongodb/data --logpath=/mongodb/log/trace.log --logappend  --auth --port=27017 --fork
[[email protected] ~]$ mongo
MongoDB shell version: 3.2.4
connecting to: test
> use admin               #因为是在admin下面添加的帐号,所以要到admin下面验证(连接)。
switched to db admin
> show dbs;
2016-03-27T10:44:27.039-0400 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13
} 

> db.auth(‘dba‘,‘dba‘);   #相当于输入用户名/密码验证(连接)
1
> show dbs;
admin  0.000GB
local  0.000GB
>

创建两个测试用户

> use admin
> db.auth(‘dba‘,‘dba‘);
> use test                #切换到test数据库,这两个用户是在test下创建的
switched to db test
> db.createUser(
...  {
...    user: "polestar",
...    pwd: "polestar",
...    roles: [{ role: "read", db: "test" }]
...  }
... )
> db.createUser(
...  {
...    user: "polestar_rw",
...    pwd: "polestar",
...    roles: [ { role: "readWrite", db: "test" }]
...  }
... );
> 

> show users;            #test数据库下只有两个用户
{
        "_id" : "test.polestar",
        "user" : "polestar",
        "db" : "test",
        "roles" : [
                {
                        "role" : "read",
                        "db" : "test"
                }
        ]
}
{
        "_id" : "test.polestar_rw",
        "user" : "polestar_rw",
        "db" : "test",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}
>
> use admin;           #admin数据库下只有一个用户
switched to db admin
> show users;
{
        "_id" : "admin.dba",
        "user" : "dba",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
>

  

  有没有一个超级权限?不仅可以授权,而且也可以对集合进行任意操作?答案是肯定的,只是不建议使用。那就是role角色设置成root。

创建超级权限用户

> use admin;
switched to db admin
> db.auth(‘dba‘,‘dba‘)
1
> db.createUser(
...   {
... user: "root",
... pwd: "root",
... roles: [{ role: "root", db: "admin" }]
...   }
... )
> 

> db.auth(‘root‘,‘root‘)         #超级用户可以垮裤插入、查询
1
> use test
switched to db test
> db.abc.insert({"a":1,"b":2})
WriteResult({ "nInserted" : 1 })
> db.abc.find()
{ "_id" : ObjectId("56f7fa72a219e00610fe75cb"), "a" : 1, "b" : 2 }
> 

  因为帐号都是在当前需要授权的数据库下授权的,那要是不在当前数据库下会怎么样?

> use admin
switched to db admin
> db.createUser(
...   {
... user: "mgdb",
... pwd: "mgdb",
... roles: [{ role: "readWrite", db: "test" }]  #在admin库下创建test库的帐号
...   }
... )
>

> show users;
{
        "_id" : "admin.dba",
        "user" : "dba",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
{
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ]
}
{
        "_id" : "admin.mgdb",
        "user" : "mgdb",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}
> 

> use test
switched to db test
> db.auth(‘mgdb‘,‘mgdb‘);
Error: Authentication failed.    #在admin下创建的帐号,不能直接在其他库验证,
0
> use admin                      #只能在帐号创建库下认证,再去其他库进行操作
switched to db admin
> db.auth(‘mgdb‘,‘mgdb‘);
1
> use test
switched to db test
> db.abc.insert({"a":1111,"b":2222})
WriteResult({ "nInserted" : 1 })
> 
时间: 2024-10-03 15:01:35

Mongodb 3.0 创建用户的相关文章

MongoDB 3.0 添加用户

定义:创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误. 语法:db.createUser(user, writeConcern)    user这个文档创建关于用户的身份认证和访问信息:    writeConcern这个文档描述保证MongoDB提供写操作的成功报告. · user文档,定义了用户的以下形式:{ user: "<name>",  pwd: "<cleartext password>&quo

mongodb 安装到创建用户,认证auth,httpinterface

今天花了一天时间来解开这个mongodb的谜团,如果有遇到了其他的问题,可以咨询我. #开始 2.6.10安装方式 不同版本后面设置用户权限方式有所差异 #下载这个版本的mongodb mongodb-linux-x86_64-2.6.10.gz #解压到当前目录tar -zxf mongodb-linux-x86_64-2.6.10.gz #更改文件夹名称mv mongodb-linux-x86_64-2.6.10 mongodb2.6.10 #在mongodb2.6.10 下创建mongod

MongoDB给数据库创建用户

一.先以非授权的模式启动MongoDB 非授权: linux/Mac : mongod -f /mongodb/etc/mongo.conf windows  : mongod --config c:\mongodb\etc\mongo.conf  或者  net start mongodb (前提是mongo安装到了服务里面) 备注: /mongodb/etc/mongo.conf 位mongo配置文件所在的地址 授权: mongod -f /mongodb/etc/mongo.conf --

mongodb 启动及创建用户

1. 守护进程启动,参考: https://blog.csdn.net/jj546630576/article/details/81117765 2. 用户管理参考: https://www.cnblogs.com/yucongblog/p/6595946.html 原文地址:https://www.cnblogs.com/BluePegasus/p/11750594.html

MongoDB3.0 创建用户

use mydb db.createUser( { "user" : "sa", "pwd": "sa", "customData" : { employeeId: 12345 }, "roles" : [ { role: "clusterAdmin", db: "admin" }, { role: "readAnyDatabase&qu

MongoDB 3.0 用户创建

摘要: MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法. 环境.测试: 在安装MongoDB之后,先关闭auth认证,进入查看数据库,只有一个local库,admin库是不存在的: [email protected]yi:/usr/local/mongo4# mongo --port=27020 MongoDB shell version: 3.0.4 connecting to: 127.0.0.1:27020/t

MongoDB 3.0以上版本设置访问权限、设置用户

定义:创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误. 语法:db.createUser(user, writeConcern)    user这个文档创建关于用户的身份认证和访问信息:    writeConcern这个文档描述保证MongoDB提供写操作的成功报告. · user文档,定义了用户的以下形式:{ user: "<name>",  pwd: "<cleartext password>&quo

MongoDB安全:创建第1个、第2个、第3个用户

Windows 10家庭中文版,MongoDB3.6.3, 前言 使用mongod命令基于某个空白文件夹(存放数据)启动MongoDB服务器时,要是没有使用--auth选项,启动后,任何客户端是可以无需认证就连接MongoDB服务器的. 比如,在MongoDB服务器启动后,在本机的终端输入mongo命令即可连接到MongoDB服务. 没有认证,不安全,在MongoDB服务器发布后,这是决不允许的! 因此,在使用mongod命令启动MongoDB服务器时,需要添加--auth选项,增加安全认证功能

MySQL workbench8.0 CE基本用法(创建数据库、创建表、创建用户、设置用户权限、创建SQL语句脚本)

原文地址:https://blog.csdn.net/zgcr654321/article/details/82156277 安装完成MySQL后,打开MySQL workbench8.0. 可以看到MySQL Connections下面是我们设置的MySQL本地登录账号,这个账号是我们在安装MySQL过程中设置的,一般命名为root,端口为3306,密码默认为空.双击进入. 要注意一点的是,在MySQL中,database(数据库)==schema(模式).在左下角schema下方区域鼠标右键