MongoDB安装-----[Linux]
1. 准备环境
- 一台linux
2. 安装
-
配置仓库文件
vim /etc/yum.repos.d/mongodb-org-3.4.repo
下面全部复制进去
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
esc + :wq! 保存退出
-
yum命令安装
yum install -y mongodb-org
-
启动mongoDB
systemctl start mongod
-
可以通过命令查看mongoDB是否真的已启动
mongo
-
进入mongo命令行后查看数据库
show dbs;
mongoDB默认端口为27017
-
开放27017端口
firewall-cmd --add-port=27017/tcp --permanent
-
重载入添加的端口
firewall-cmd --reload
-
查看是否开启成功
firewall-cmd --query-port=27017/tcp
-
找到mongoDB的配置文件
whereis mongod
-
查看配置
vim /etc/mongod.conf
把bindIp: 127.0.0.1用#注释掉, 否则外网无法访问
-
重启mongodb
systemctl restart mongod
-
用mongoDB连接工具测试连接
好了现在我们可以从安装这个坑出来了, 进入另一个坑 ↓↓↓↓↓↓↓↓
3. 配置用户角色权限
通过刚才的安装, 数据库是可以使用了, 但是现在是没有任何安全可言的, 只要得知服务器IP及mongoDB的端口即可以管理员身份连接, 因此下面我们要进行用户角色权限配置
-
指定admin数据库
use admin
-
创建管理员用户
db.createUser({ user: "admin", // 用户名 pwd: "12345", // 密码 roles: [ { role: "userAdminAnyDatabase", // 角色 db: "admin" // 数据库 } ] })
角色规则:
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) -
创建数据库(直接用use创建数据库)
use test
打印输出switched to db test就是已经指向test数据库了
但是现在就算刷新了还是没有显示test数据库的, 我们必须先插入一条数据
-
插入数据
db.test.insert({ "name": "JC", "age": 16 })
然后就可以看到我们的数据库和插入到数据库中的数据了
-
分配独立数据库用户
注意: 请先使用use指向预分配用户要使用的数据库, 否则后续该用户登录进入时会提示无存储数据库权限(比如分配test数据库的用户存在admin数据库, 会报错admin数据库权限不够, 不信自己试)
use test
db.createUser({ user: "jcjava", // 用户名 pwd: "12345", // 密码 roles: [ { role: "readWrite", // 读写权限 db: "test" // 数据库 } ] })
-
添加到授权中
db.auth("jcjava","12345")
如果不添加, 该用户登录时会报未授权的错误, 见下图
-
重启mongoDB并开启认证登录
**注意: **
1. 不建议用kill或关闭服务的方式结束mongoDB进程, 否则mongoDB生成进程锁, 会影响下一次启动(当然你想研究就慢慢踩坑自己研究吧)
2. 此处建议用mongoDB自带函数关闭服务
db.shutdownServer();
这里看到reconnect 127.0.0.1:27017 failed的时候, 其实mongoDB就已经结束了(见下图)
-
修改mongoDB配置
vim /etc/mongod.conf
加上下面这句
security: authorization: enabled
esc + :wq! 保存退出
-
启动mongoDB
systemctl start mongod
-
连接测试
之前的连接就会显示未授权啦~
把连接配置改成我们刚才配置的账号密码
OK! 并且这个超级管理员可以使用任意数据库没有问题!
-
然后测试刚才的独立数据库分配用户
注意: 这里的验证数据库, 其实就是存储用户的数据库(所以之前放同一个数据库方便)
OK! 并且只显示分配的数据库!
至此, 全篇完!!!