您的位置:首页 > 数据库 > Mongodb

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

2018-03-23 17:10 465 查看
关于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" ] }


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

> db.auth("root","root123")
1


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();函数来查询。

如何创建数据库用户

首先保证
c94d
你已经以用户管理员的身份登录 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: