启动mongo方式有两种
下面两种启动操作均先进入mongo安装目录的bin目录下:
(1)命令行启动
./mongod -dbpath /usr/local/mongodb/data【此处填写自己的data目录所在路径】 -logpath /usr/local/mongodb/log/mongo.log【此处填写自定义的日志文件所在目录】 -logappend -fork -port 27017
(2)配置文件启动
./mongod --config /usr/local/mongodb/etc/mongo.conf【自3己的配置文件路径】
关闭mongo,方式两种,
(1)进入mongo安装目录的bin目录下:
./mongod --shutdown --dbpath /usr/local/mongodb/data【此处填写自己的data目录所在路径】
(2) 查看进程 ps -ef|grep mongo
杀死进程 kill +mongo端口号
一、Mongo权限字段解析
基于以上用户角色字段的基本介绍,本人做了以下试验。
二、基础角色的创建
2-0、在新安装的mongodb数据库中,未创建任何用户的情况下,无论是否开启了认证模式(启动时 auth=true),我们都可以执行数据库的任意操作。
2-1、数据库初始化管理用户创建
在完成mongodb安装之后,为了方便管理 mongodb 的所有数据库用户信息 ,我们选取角色 userAdminAnyDatabase 。
而该角色仅支持在 admin 数据库中使用。
以下是验证示例:
切换到别的数据库,创建角色为 userAdminAnyDatabase 的用户,创建失败,报错没有该角色。
新安装一个mongodb ,连接到mongo 之后,初始化进入的是 test,
切换到 admin 库,创建全局管理用户admin,对应的角色就是上文中的userAdminAnyDatabase ,下图中,我创建的时候多给admin用户一个hostManager角色,主要是为了在命令行可以运行 db.shutdownServer() 命令来关闭mongo服务。经过测试,未开启 权限认证的情况下,db.shutdownServer() 命令可以正常使用,开启权限认证后,admin用户必须具有hostManager角色才有权限执行 db.shutdownServer() 命令。
2-2、重启mongodb 服务,开启认证模式
【*】开启认证模式需要将配置文件中修改auth=true,,或者 命令行启动的时候 加上 --auth=true 。
启动之后。连接上mongo,我们切换到任意数据库下,执行数据库操作,都会报错,如下所示,
此时, 需要先进行权限认证,然后再进行数据库操作。
认证命令:db.auth("username","password");
认证成功则返回 1 ;失败返回0;
2-3、给自定义数据库添加管理用户,
通过上一步认证成功,我们切换到自己的数据库,本示例以数据库 facebook 为例。
(1)给 facebook 创建本库的管理用户,
db.createUser({user:"firstuser",pwd:"123456",roles:[{role:"readWrite",db:"facebook"},{role:"userAdmin",db:"facebook"}]});
userAdmin角色具有管理当前数据库用户信息的权限,包括增删改用户信息。
readWrite角色可以对数据库进行增删改查操作。
(2)创建完用户之后先退出mongo 连接,在连接
切换到 facebook 库,认证 facebook 用户信息,认证通过之后可以进行相关操作;
(3)在facebook下创建 具有读写权限的用户 seconduser,但是该用户不具有管理当前数据库用户的 权限,
不用退出,执行 db.auth("seconduser","123456");
认证通过之后,我们执行查询当前数据库用户列表命令,提示没有权限,
(4)修改 seconuser 的角色信息,退出重新连接mongo,
切换到 admin 库。执行认证操作,认证通过之后切换到 facebook ,不需要认证 facebook下的用户信息,直接执行更新操作,
退出连接,重连mongo
三、更改用户密码
要想更改用户信息,需要切换到对应的库,如果用户不是在该库下创建的,则会报错未找到要修改的用户
方式二、
退出重新连接mongo,切换到facebook 库,认证通过,可以 修改 facebook 下的用户信息。
删除用户:
认证通过之后:
执行命令:db.dropUser("username") 删除成功返回 false
四、遗留问题
关于新建从admin 库切换到用户自定义数据库 (facebook),在facebook 下,创建完facebook库相关用户后,本人发现以下现象。
(1)在不退出当前连接的情况下,由于已经认证了 admin库 下用户,在验证别的库(facebook),也可以验证通过,但是facebook库操作不了。所以每次认证完一个库A,要想再操作另一个库B,需要重新连接,直接切换到目标库B,进行认证,再进行库B的基本操作。现象截图如下:
总结:在认证完一个库的情况下,要想操作别的库,本人都是重新连接,直接切换到目标库,认证完目标库,才操作目标库。
假如哪位大神知道怎么在不退出连接的情况下,从一个已认证的库切换到另一个的库,认证之后可以正常操作的,麻烦指点一下。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
第一部分权限信息截图取自 https://blog.csdn.net/qq_33206732/article/details/79877948 , 该文对于权限的解释比较详细。用户可参考。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++