MongoDB创建用户角色

2017-09-11 · xiejiahe

mongodb 版本 3.4

启动MongoDB

启动MongoDB有两种方式

1、通过命令行启动

  • –dbpath 指定数据库目录
  • –fork 守护进程
  • –port 指定端口,默认是27017
  • –logpath 指定输出日志路径, 前提是先创建好目录
mongod --dbpath=/home/mongodb/db --fork --port=27017 --logpath=/home/mongodb/mongo.log

2、以文件配置形式启动,推荐。以后只要改动这个文件就好了。

# 1、 直接在当前目录编辑mongo.conf,没有的话会新建。名字自己定义。
vim mongo.conf

# 2、 写入以下内容
dbpath=/home/mongodb/db
logpath=/home/mongodb/mongo.log
fork=true

# 3、 指定配置文件启动
mongod -f mongo.conf

连接

mongo localhost:27017

# 或者,默认是localhost 端口是27017
mongo

创建用户角色

3.0版本以后使用 db.createUser 创建, addUser 已弃用。

MongoDB用户角色是跟着数据库走的。在哪个数据库创建就只能操作哪个数据库。

1、验证admin权限, 需要先验证才能后续的操作,否则无权限

# 进入admin数据库
use admin

# 验证,如果返回1说明成功
db.auth('用户名', '密码')

2、假如数据库是 test

# 先进入test数据库
use test;

3、创建用户

# user 用户名
# pwd 密码
# customData 对用户角色的描述,可省略
# roles 是一个数组里面是对象, 分配权限和数据库
db.createUser({
    user: '用户名',
    pwd: '密码',
    roles: [
        {
            role: '权限分配',
            db: '指定数据库',
        },
        {
            role: '权限分配',
            db: '指定数据库',
        }
    ]
})

4、验证是否分配权限成功

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

role权限说明

  • read - 允许用户读取指定数据库
  • readWrite - 允许用户读写指定数据库
  • dbAdmin - 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin - 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin - 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase - 只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase - 只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase - 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase - 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root - 只在admin数据库中可用。超级权限
  • __system - 内部角色

例如创建一个读写数据库的用户角色:

db.createUser({user: 'root',pwd: 'root',
    roles: [
        {
            role: 'readWrite',
            db: 'test',
        },
    ]
})

用户名密码连接

# 连接,地址:端口/数据库, -u 指定用户名, -p 指定密码
mongo localhost:27017/test -u 用户名 -p 密码

# 进入 test 数据库
use test;

# 查看集合 show tables; 或者 show collections;
show tables;

# 尝试插入一条数据,如果成功表示没问题
db.users.insert({name:'admin'})

删除用户

# 注意的是你在哪个数据库创建的用户就要进入哪个数据库删除,否则出错。
db.dropUser('用户名')
SQL
原创文章,转载请注明出处。