一、准备工作:
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