先给个mongodb的下载地址,你可以先下载然后看下面的故事,如果你已经下载请忽略。下载地址:https://www.mongodb.com/download-center#community 之所以给出这个地址,主要是因为我个人也不能一下子就找到它,Google 搜索 mongodb 点进去后并没有社区版的下载地址。
我第一次接触mongodb是15年,在此之前使用的基本是mysql和sqlite,而平时的工作中关系型数据结构很多,文档型数据库显得力不从心,而我对mysql的性能优化理解的非常有限,所以果断跑去用mariadb 了。说得简单点,我是为了联合查询才用了mysql,但是,在之后的工作中,我不止一次发现mysql性能低下,即使是使用了mariadb 性能也不见得好多少,现在,我非常不建议你使用联合查询,因为联合查询会导致缓存没用,比如我现在的 别样网 首页有很多图片和作者信息,这个数据结构很简单,一张用户表,一张作品表,一张作品子项表,用户没登录则3张表联合查询,用户登录了则再查询下用户是否已经收藏,即4张表联合查询。说了这么多,打个广告,别样网是免费无版权高清图片共享平台。当有4张表联合查询的时候,sql语句不变的可能性很低,所以mysql的缓存基本是用不上,而如果分4次查询,至少每次查询的sql语句一样,会用到缓存,尤其是我们日活6000-7000呢,这样子的优化表现的非常明显。另外,我重构了架构,统一用户管理,那么别样网的数据库里其实是没有用户信息的,简单的说做了垂直分库,联合查询没鸟用。所以,我建议你将联合查询分离,扯淡结束,接入主题。
我下载的是3.6.3版本,并解压到了/opt/mongodb 然后在 /etc/profile 里加入了
export PATH=$PATH:/opt/mongodb/mongodb-3.6.3/bin
安装完毕,现在启动并添加用户: mongod --dbpath /opt/mongodb/data
这将启动数据库并将数据存储在/opt/mongodb/data目录里,请确保这个目录存在。接着输入 mongo,然后输入 use admin,一下是一些命令:
查看已有用户:db.system.users.find()
删除一个用户:db.system.users.remove({user:"test"})
添加管理员:db.createUser({user:"root",pwd:"root",roles:[{role:"readWrite",db:"admin"}]})
修改密码:db.changeUserPassword("username", "xxx")
添加一个普通用户,先use test 然后
db.createUser({user:"root",pwd:"root",roles:[{role:"readWrite",db:"test"}]})
创建普通用户你需要先切换到他的数据库,然后创建,而创建超级管理员,你需要切换到admin,安全方面,我只提几点。
首先,必须使用 auth ,如果用 mongod --dbpath /opt/mongodb/data 命令启动,那么是不需要授权的,这很危险,可以通过 mongod --dbpath /opt/mongodb/data --auth 的方式启动。
接着不要监听所有 0.0.0.0 监听来自127.0.0.1 的连接即可,其次使用ssl,避免中间人攻击,最后一点给用户仅仅必要的权限,而不是所有权限。