MongoDB:
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
安装 MongoDB:
# 在/etc/yum.repos.d/目录下创建文件mongodb-org-3.6.repo,它包含MongoDB仓库的配置信息,内容如下:
# 复制代码, 代码如下:
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
# $releasever 为你的Linux发行版本
yum 安装 MongoDB
yum install -y mongodb-org-3.6.3
启动MongoDB
systemctl start mongod
设置开机自启
systemctl enable mongod
配置MongoDB:
开启认证也很简单,在配置文件(默认是/etc/mongodb.conf)里面进行配置即可:
security:
authorization: enabled
#2.6前的版本为auth = true
重启数据库后,再次进入数据库进行插入等操作,就会提示错误了。这说明权限认证生效了,未认证通过的用户再也不能使用数据库了(即使能进mongo shell)。
这时我们需要一个“超级管理员”来创建、分配管理员给指定数据库。
MongoDB的开发者早已经想到了这一步。MongoDB自带一个数据库叫admin,这个数据库用来管理所有数据库的,类似于MySQL的mysql数据库。如果这个数据库的管理员账户还没有建立,那么任何人都可以在admin数据库里面新建管理员账户。
--进入admin数据库
use admin;
--运行db.createUser方法新建用户
db.createUser({user: '超级管理员用户名', pwd: '密码', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]})
createUser方法必须传入一个有user(用户名)、pwd(密码),roles(角色)三个属性的JSON对象。不同roles拥有不同权限,比如:数据库读、数据库写、数据库用户管理等等,其中角色userAdminAnyDatabase 可以看做是“超级管理员”,我们建立该角色的用户后,就可以用这个用户来管理其他用户了。
MongoDB内置角色:
十分复杂,为了简单起见,就讲其中两个:read、readWrite也就是常用的读数据库和读写数据库。
这里有一个不大不小的坑,就是你要给其他数据库创建用户,都必须先到admin数据库,认证刚才新建的那个admin用户,然后再切换到其他数据库才能建立用户。
建立了admin用户之后,还必须先进入admin数据库进行认证:
步骤如下:
use admin;
db.auth('超级管理员用户名', '密码')
然后切换到数据库a,给数据库a创建用户
use 数据库a;
db.createUser({user: '用户a', pwd: '密码', roles: [{role: 'readWrite', db: '数据库a'}]})
db.auth('用户a', '密码')
现在,就可以使用用户a
管理数据库a
,进行正常的读写了。
开启远程登录:
在配置文件(默认是/etc/mongodb.conf)中,注释掉bindIp,或者将127.0.0.1改为0.0.0.0
# network interfaces
net:
port: 27017
#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
最后是MongoDB图形化管理工具: