MongoDB设置后台运行和添加账户和密码

一、准备工作:

1. 安装好MongoDB,可以参考菜鸟教程(我装在腾讯服务器上,安装目录/usr/local/mongodb,安装版本3.0.6 )

2.准备连接MongoDB的可视化工具(我使用的是最新的Datagrip 2020.1版本)

 二设置后台运行:

新装好的MongoDB默认是没有密码的,直接连接,打开shell,执行  ./mongod 命令 ,远程或本地都可以连接,但是shell窗口一旦关闭,mongodb也直接退出了。

进入/bin目录下

所以,启动时候增加参数 --fork,而且还要带两个参数--dbpath --logpath 才能后台运行

 --dbpath 表示安装目录 ,
 -- logpath 自己创建一个日志文件
 -- 另外不是正常关闭,例如kill -9 会损坏文件,启动下面的命令会报错~解决方法是./mongod 临时启动一下,然后关闭shell窗口即可,或者 pkill mongod
 --  --auth  # 启用认证
 ./mongod --fork --auth --dbpath=/usr/local/mongodb --logpath=/usr/local/mongodb/mongo.log --logappend

成功的话会提醒,效果如下

三、设置账户和密码

 上面已经启动时候带 --auth  启用认证了, 设置密码是给某个数据库设置密码的,这里创建一个数据库admin(可自行设置),然后创建一个用户也叫admin(可自行设置) 

 /bin目录下执行,可以看到版本号等信息。

./mongo (后面不带'd') 

 创建数据库

 -- 没有就创建数据库,有的话就是用数据库
use admin;

 执行设置用户命令

db.createUser({ "user" : "admin",
                "pwd": "123456",
                "roles" : [  {role:"userAdminAnyDatabase", db: "admin"},
                             {role:"readWriteAnyDatabase", db: "admin"}
                        ]
              },
             { w: "majority" , wtimeout: 5000 }
            );

role:表示角色,db:表示当前角色针对哪个数据库有效。
比如设置了admin 那么这个用户的权限范围只在admin数据库有效;
比如我设置 role:"readWrite", db:"mydb" 那么这个用户只能在mydb这个数据库有读写的权限
但是MongoDB中提供了几个全局数据库的角色,例如上面的 userAdminAnyDatabase, readWriteAnyDatabase

 效果如下:

 

重新打开一个shell窗口,进去/bin目录下

./mongo  -- 进入数据库命令
-- 切换到admin数据库:
use admin;
-- 进行身份认证:
db.auth("admin","123456");
认证成功返回1,如果认证失败会提升相关的错误信息。
--我们可以查看一下系统用户:
db.system.users.find()

效果:

 四、使用Datagrip连接数据库

 如果不使用账户密码登录,连接后数据库默认是test 。

五、可视化工具简单操作一下

-- 查看数据库
show  dbs ;

 -- 没有就创建数据库,有的话就是用数据库
use jiangjun ;

-- 插入数据后才能查看到
db.jiangjun.insert( { "name" :"将军上座"}) ;

-- 查看集合
show collections ;

-- 创建集合
db.createCollection('helloworld');

 /*创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。*/
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
   6142800, max : 10000 } )

-- 当你插入一些文档时MongoDB会自动创建集合
db.jiangjun2.insert({"name" : "自动创建了集合"});






参考: https://blog.csdn.net/nimasike/article/details/48441945
原文地址:https://www.cnblogs.com/coloz/p/12710836.html