Mongodb 3.x 安装及权限配置

Intro

Mongodb本身已经是比较成熟并已经广泛使用的一款nosql产品。了解该产品最好的方式当然是官网,考虑到网络和语言习惯,一些具有中文站则会给我们更大的便利。这篇文章主要记录一下折腾Mongodb3.x的一些步骤,其中所有的内容都是通过阅读官方文档了解的。

一、Mongodb安装

由于大部分时候Mongodb serever都是跑在Linux环境下,所以这里默认操作系统都是Linux centos6。Mongodb版本为当前最新,v3.4.2。

  • tgz包下载
wget 'https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.2.tgz'
  • 解压缩
tar zxvf  mongodb-linux-x86_64-amazon-3.4.2.tgz
cd mongodb-linux-x86_64-amazon-3.4.2/bin

这里会看到所有Mongodb相关的可执行文件,目前只关注

executabledesc
mongodServer启动程序
mongoClient启动程序


二、Mongodb启动

1. 启动Server

知道了Mongodb server的启动文件是mongod,那么猜想 ./mongod既能启动server,但是很自然我们首先会关注这样几个问题。
1) 默认监听端口是多少,如果设置我自己想用的端口号
2) 运行日志在哪里看
3) 持久化的数据文件放在哪里
4) 是否有配置文件支持更多细节的配置

启动命令

./mongod --port 27017 --dbpath /mongodb/data --logpath /logs/mongodb.log  -f /mongodb/server.conf

以上命令解答上面提到的4个问题。

--port 指定客户端连接端口号,默认27017
--dbpath 持久化数据所在路径,启动前该路径必须存在
--logpath 日志文件
-f 指定配置文件,简单的properties文件,自己创建即可

如果个性化参数都写在配置文件中会让启动命令变得清爽一些,我自己是这样做的

./mongod -f /mongodb/server.conf

配置文件 cat /mongodb/server.conf

port=27017
logpath=/logs/mongodb.log
logappend=true #日志生产方式 (追加/覆盖)
dbpath=/mongodb/data
2. 客户端连接

Mongodb client的启动文件是mongo,而我们又知道mongodb服务的ip:port,猜都能猜到客户端连接命令

./mongo 127.0.0.1:27017

如果连接成功,mongodb的安装就到此结束了。


三、权限配置

现在mongodb已经安装启动可以使用了,但是很奇怪,一直都没有遇到过权限问题,如果其他人也能随意连上我的数据篡改数据岂不是麻烦了。那下一个要解决的问题 就是为我的数据库加上权限控制。

总的来说是以下几步:

1. 开启权限验证

在server.conf中加上一行

auth=true

2. 添加管理员账号

这里所说的管理员账号不是像linux里面无所不能的root,而是一个能分配账号的账号。在server所在的系统,用客户端连接上server,执行以下代码

use admin
db.createUser({
    user:'admin',
    pwd:'123456', 
    roles:[{role:'userAdminAnyDatabase', db:'admin'}]
})

这样就创建了一个账号,user为admin, 密码为123456,他能在admin库中管理任何库的用户。

3. 添加数据操作账号

一旦开启的权限管理,接下来所有的操作都必须用合适的账号去做,刚刚我们能成功的添加用户,是因为这是我们的第一个账号(第一就有特权,呵)。我们创建的admin账号只能管理用户,而我们真正需要的账号是要能用来读写数据的,那就需要创建一个可读写数据的账号。

接下来,我们要为一个名为”testDatabase”的库添加读写用户rwuser。

use admin
db.auth("admin","123456")
use testDatabase
db.createUser({
    user:'rwuser',
    pwd:'123456', 
    roles:[{role:'readWrite', db:'testDatabase'}]
})

使用exit退出连接后,我们就可以使用该账号连接server了

./mongo 127.0.0.1:27017/testDatabase -urwuser -p123456


四. mongodb相关概念

mongodb也存在和mysql类似的“库”概念,大体概念是相似的,同样默认会有一个test库。Collection的概念则对应mysql中的表。

相关的命令:

commanddesc
use ${databaseName}切换到databaseName
db当前所在库名
show collections列出当前所在库中所有collection名字
show dbs列出所有库



在这里“库”的概念之下,我们回头看添加账号时的一些操作。

//use testDatabase =>
use admin
db.createUser({
    user:'rwuser',
    pwd:'123456', 
    roles:[{role:'readWrite', db:'testDatabase'}]
})

admin账号登录后,为testDatabase库创建账号时,做了一次库切换use testDatabase,可明明在roles:[{role:'readWrite', db:'testDatabase'}]这一行代码里已经指明给该账号的是testDatabase库的读写权限,还需要多此一举吗。在mongodb里,这确实是有意义的。简单的说来,就是在某个库下创建的账号,只能用来登录到这个库,若再要操作其他库,则需要先做库切换。举个例子,如果上一节中use testDatabase改成use admin,登录命令则需要改成:

./mongo 127.0.0.1:27017/admin -urwuser -p123456

而此时连接成功后是登录到admin库,然后需要use testDatabase才能做后续的读写操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值