MongoDB设置访问权限、设置用户

关于mongoDB的安装,请参照菜鸟教程,十分详细:http://www.runoob.com/mongodb/mongodb-tutorial.html

MongoDB默认设置为无权限访问限制,这样十分不安全,任何人都等通过IP和端口访问你的mongo数据库,所以需要设置用户及权限;

基于OSX
MongoDB在本机安装部署好后

用户管理员是第一个要创建的用户。在没有创建任何用户之前,你可以随意创建用户;但数据库中一旦有了用户,那么未登录的客户端就没有权限做任何操作了,除非使用db.auth(username, password)方法登录。

1、用户管理员的角色名叫 userAdminAnyDatabase,这个角色只能在 admin 数据库中创建。下面是一个例子:

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

超级用户:

db.createUser({user:"bossyan",pwd:"bossyan",roles:["root"]})

注意:需要为哪个数据库创建账号,则需要先use dbname进入相应的数据库进行创建

删除用户:需要进入对应的数据库删除其账户

db.dropUser("root")

查看用户:

db.system.users.find().pretty()

2、这个例子创建了一个名为 root 的用户管理员。创建完了这个用户之后,我们应该马上以该用户的身份登录:

> db.auth("root","root123")
1
  Built-In Roles(内置角色):
    1. 数据库用户角色:readreadWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

db.auth() 方法返回 1 表示登录成功。接下来我们为指定的数据库创建访问所需的账号。

即然我们添加了超级管理员,那咱们就来测试下,看看咱们再次连接MongoDB需不需要提示输入用户名、密码,我们先退出来(ctrl+c)

3、输入命令:use admin

4、输入命令:show collections,查看该库下所有的表,你会发现,MongoDB并没有提示你输入用户名、密码,那就奇怪了,这是怎么回事呢?在文章最开始提到了,

MongoDB默认设置为无权限访问限制,即然这样,那我们就先把它设置成为需要权限访问限制,咱们再看看效果,怎么设置呢?

5、重启服务:
关闭mongo服务,再次启动服务时添加–auth参数

sudo ./mongod --dbpath=/data/db/  --auth 

如果有日志配置则:
–fork:

以守护进程的方式运行服务(后台)。

sudo ./mongod --dbpath=/data/db/  --logpath=/data/db/logs/serverlog.log -logappend --auth --fork

日志问题查看:https://blog.csdn.net/shihuacai/article/details/36680845
6、这样就会开启安全检查。服务器启动完后。在用mongo连接,然后用db,auth(“name”, “pass”)函数来登录。这样才有操作的权限。

7、在admin数据库添加的账户都是超级管理员账号。
要给具体的数据库设置专用的管理员,先用use databaseName命令切换到对应的数据库,在调用db.addUser(“name”,”pass”);函数来添加账户就行。

8、查看当前数据库有哪些用户,可以在db.auth()登录后,使用:db.system.users.find();函数来查询。

如何创建数据库用户

首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。

普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
下面是一个例子:

use test
switched to db test
db.createUser({user:”testuser”,pwd:”testpass”,roles:[“readWrite”]})
Successfully added user: { “user” : “testuser”, “roles” : [ “readWrite” ] }
db.auth(“testuser”,”testpass”)
1

这里写图片描述

这样 MongoDB 的数据安全性就得到保障了,没有登录的客户端将无法执行任何命令。

用户创建、删除、修改:https://www.cnblogs.com/shiyiwen/p/5552750.html

一、启动

1.启动:

使用mongodb bin目录下的mongod命令来启动mongodb服务器:

mongod --dbpath=/home/mongodb/dbfile/data_file/ --logpath=/home/mongodb/dbfile/log_file --fork;

参数说明:

–dbpath:

指定数据库文件路径。每个mongodb 都进程都需要指定自己的数据库文件路径。mongodb服务启动后,会在数据目录下面创建mongod.lock文件,通过这个文件来

限制其他mongodb进程使用这个目录。如果一起monogodb进程试图去使用一个已经被其他进程正在使用的数据目录,则回报:

exception in initAndListen: 10310 Unable to lock file: /home/mongodb/dbfile/data_file/mongod.lock. Is a mongod instance already running?, terminating

错误。

–logpath:

指定日志输出路径,如果文件不存在,就会生成新的日志文件(目录要有写权限),如果已经处在,则默认会清除重写。如果想保留旧日志。则需要使用

“–logappend”参数选项。

–fork:

以守护进程的方式运行服务(后台)。

–config:

指定配置文件,可以把启动的参数预先写在配置文件里,通过这个参数指定对应的配置文件,mongodb会从配置文件里读取启动参数。

–auth:

开启安全检查,第一次启动mongodb的时候,不要带这个参数,启动添加管理员账号后,再带这个参数重启服务。

二、退出和关闭数据库

1:退出客户端
如果已经用mongo登录到数据库了,可以使用”ctrl+c”来退出mongo客户端(服务器不会关闭),

2:关闭数据库进程:
(1)使用kill PID -2来关闭mongodb服务器(不要使用-9参数,会导致数据库文件损坏)。
(2)登录mongo客户端之后,切换到admin数据库,再调用db.shutdownServer()函数来关闭mongodb服务。

用户登录数据库测试

./bin/mongo -u user -p password 127.0.0.1:27017/dbname

mongodb远程连接工具:
Robo 3T

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值