MongoDB基础配置及权限配置

MongoDB基础配置及权限配置

NoSQL MongoDB Web Linux

  • MongoDB基础配置及权限配置
      • Linux安装
      • 基本配置
      • 用户权限配置

长期以来,在Web项目开发中,我一直使用关系型数据库Mysql作为数据仓库,这也是大部分Web开发者在学习阶段,或实际开发中最常用的数据库。随着近几年大数据等新兴概念的兴起,NoSQL数据库也日趋变的流行,MongoDB目前来说是其中应用比较广泛的。

就目前纯粹的个人使用感受来讲,其最吸引我的就是其类JSON的数据结构,在开发中完全可以抛弃Mysql中需要的前期设计,并且在开发过程中,可以很快捷的改变早期数据结构,并对前期开发减少影响。当然,如此简便的特性并不是说我们可以完全的不用考虑数据库结构,作为开发过程中最基础的承载,数据库设计的一些基本准则我还是需要遵守的。而且作为新兴数据库体系,MongoDB也不是能应用于所有领域,所以,在其使用上还需要做一番斟酌,不过在我接触的大多数的商业项目中,有70%在开发时采用MongoDB会取得较好效果。

Linux安装

跟大多数Linux软件一样,MongoDB在基本安装方式为编译安装,并且针对各个系统版本有相应的简易安装包。具体细节可参考其官方网站,在这里不做赘述。

MongoDB官网:https://www.mongodb.org

基本配置

MongoDb在初次安装完成后,最好结合实际情况对齐基础配置文件做一定配置,假如按照起默认的运行方式,在实际生产环境中,很难保证其稳定运行。一般
MongoDb默认的基础配置文件在/etc/mongod.conf

一般最开始需要配置的为bind_ip,在这一点上MongoDb与Mysql有很大不同。Mysql的监听IP默认与系统IP相同,所以一般不需单独配置,只需配置用户即可从外部用访问。但是在MongoDb,假如你要以127.0.0.1做为访问地址的话,你的bind_ip必须也为127.0.0.1,假如配置为公网地址的话,你的数据库用127.0.0.1会无法连接。
下面是以10.0.0.1作为外网访问地址,127.0.0.1作为本机访问地址的配置。

# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip=10.0.0.1,127.0.0.1

剩余如日志文件位置、仓库存储文件路径等按实际情况配置即可

用户权限配置

在用户权限分配上,MongoDB管理是相对比较宽松的。在其默认的安装中,MongoDB是没用用户的,单纯的作为数据仓库使用。也就是说Mongo在启动后,任何指导服务器IP的人都可以链入数据库,进行任何操作。想要对数据库访问进行权限限制,首先要在配置文件中开启权限选项,开启后在未完成用户设置后不要重启数据库。

security:
  authorization: enabled

setParameter:
  authenticationMechanisms: MONGODB-CR,SCRAM-SHA-1
  enableLocalhostAuthBypass: false
  logLevel: 4

因为MongoDB并不存在默认的管理员账户,所以配置文件更改完成重启数据库之前,我们需要进入数据库增加admin管理员。因为目前数据库仍然是没有用户状态,所以我们直接登入数据库即可。


use admin;

//创建管理员用户
db.createUser(
   {
     user: "admim",
     pwd: "admin",
     roles: [ "userAdminAnyDatabase" ]
   }
)

在进行以上设置后,我们可以重启MongoDB服务并登入数据库,这时会发现,我们执行show dbs;等操作均无法执行,这是因为我们登录是不需要认证的,但是要访问具体数据库,或者对数据做更改的时候,已经是没有相关权限了,这时我就要为需要访问的数据库添加权限。


use admin;

db.auth("admim","admim");  //登录用户admin

//MongoDB用户是跟着数据库走的,所以我们要先进入需要添加用户的数据库
use test;

//创建test数据库读写用户test
db.createUser(
 {
   user: "test",
   pwd: "test",
   roles: [
      { role: "readWrite", db: "test" }
   ]
 }
)

db.auth("test","test");  //登录test库用户test

现在我们就可以对test库进行相关操作了。

你可能感兴趣的:(MongoDB,NoSQL,linux)