主题
MongoDB的安装、配置、卸载
MongoDB的版本偶数版本为稳定版,基数版本为开发板,所以下载时要注意下载偶数版的,比如:4.2位稳定版 4.1为开发版 MongDB对32位操纵系统支持不佳。所以3.2版本后没有再对32位系统的支持
一、windows10安装MongoDB
一般windows上面的mongoDB都是用于开发阶段,不会做过多的配置,包括密码等,且windows上面的安置就是下一步下一步的操作,很简单,所以不过多纠结,可以参照下面文章, 本文主要讲解centos上面的安装
windows安装参考文章:https://blog.csdn.net/baidu_39298625/article/details/98592631 MongoDB官网:https://www.mongodb.com/
下载地址:https://www.mongodb.org/dl/win32
二、Centos安装MongoDB与卸载
我当前的 centos版本为 centos8.0.1
(一)、查看是否有MongoDB源
CentOS8的源位置在/etc/yum.repos.d/
cd /etc/yum.repos.d/
ll
检查是否有这样的文件,名字可能不完全一样,但是至少会包含mongodb字样
若没有这文件,则手动建一个
vim /etc/yum.repos.d/mongodb.repo
文件内容如下:
[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/
gpgcheck=0
enabled=1
(二)、安装
1、执行命令
sudo yum makecache
2、执行命令
sudo yum install mongodb-org
安装成功
3、启动mongodb 并设置开机启动
依次执行以下命令
systemctl status mongod
systemctl start mongod
systemctl enable mongod
4、检查MongoDB的服务状态和端口监听信息
依次执行以下命令
systemctl status mongod.service
netstat -anplt| grep mongod
ss -anplt | grep mongod
可以看到端口是21017
5、配置MongoDB可让外网访问
默认情况下,MongoDB服务在本地主机接口上运行。因此,要使其能够从网络访问,我们需要在所有接口上运行MongoDB服务
必须先停止服务再修改,否则修改完后重启会报错!!!!
先停止mongodb服务
sudo service mongod stop
修改bindIp 为 0.0.0.0
vim /etc/mongod.conf
重新启动MongoDB服务以应用更改
sudo service mongod start
注意:
- 配置完后重启时候可能会报错,就像
这应该是属于Linux系统的权限问题。 解决方案: 我们进入到/tmp目录并找到mongodb-27017.sock文件
cd /tmp
ll *.sock
接着,修改文件权限:
chown mongod:mongod mongodb-27017.sock
最后重新启动
systemctl restart mongod.service
启动成功,可以在浏览器输入数据库所在的公网Ip:27017,例如:121.4.81.217:27017 至此,可以外网访问了
本地也可以访问了
(三)、卸载mongodb
1、卸载MongoDB
sudo yum erase $(rpm -qa | grep mongodb-org)
2、删除日志文件
sudo rm -r /var/log/mongodb
3、删除数据文件
sudo rm -r /var/lib/mongo
三、安装连接工具,用连接工具连接,操纵mongodb
图形化工具的好处有:
- 1、图形化操作,对数据库和集合和字段一目了然
- 2、图形化工具也提供命令操纵控制台,最关键的一点是输入命令有提示
这里安装的连接工具是MongoDB Compass
1、下载 MongoDB Compass
下载地址:MongoDB Compass
2、解压安装MongoDB Compass
将下载的安装包解压后,点击 MongoDBCompass.exe
可执行文件即可
3、Compass连接mongoDB
首次打开连接工具,若是连接的是本地mongodb,则什么也不用动,直接点击Connect
按钮即可(默认无账号密码,端口27017) 若是连接远程数据库,则需要输入mongoDB所在主机的IP,端口,用户名密码(若有的话就输入,没有则忽略)
mongodb://<用户名:密码@>IP地址:端口/<数据库名称> # <>里面的内容表示可选
例如:
有密码: mongodb://root:123456@121.4.81.217:27017/study
无密码:mongodb://121.4.81.217:27.17/study
4、MongoDB Compass使用说明
四、MongoDB设置用账户密码访问
在上一步中,我们安装好MongoDB后,可以直接通过MongoDB Compass连接到数据库,不需要输入账户密码,这使得任何人都可以访问我们的数据库,这仅在开发阶段可以这样,若是要部署到正式环境,这非常危险,无疑是将我们的数据暴露给任何人。 mongodb密码和传统数据如mysql等有些区别: mongodb的用户名和密码是基于特定数据库的,而不是基于整个系统的。所有所有数据库db都需要设置密码。
先用xshell登录服务器,进入到 mongo
mongo
1、查看所有数据库
在mongodb新版本里并没有admin数据库,但是并不妨碍第2步操作。
show dbs
2、进入admin数据库
use admin
3、创建管理员账户
mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。admin用户用于管理账号,不能进行关闭数据库等操作。
db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
说明
- 1、user: "admin", pwd: "admin" 分别为用户名密码
- 2、role: "userAdminAnyDatabase"是固定写法,这是一个账号管理员的角色
- role 用来设置用户的权限,比如读,读写 等等
- 3、db:"admin"是指的为admin设置超级管理员账户
扩展-----mongoDB权限说明
参考:https://www.cnblogs.com/pl-boke/p/10063351.html
Built-In Roles(内置角色):
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)
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
4、创建root
创建完admin管理员,创建一个超级管理员root。角色:root。root角色用于关闭数据库 db.shutdownServer() 关闭当前数据库运行实例或安全停止有关操作进程
db.createUser({user: "root",pwd: "root", roles: [ { role: "root", db: "admin" } ]})
5、创建用户自己的数据库的管理角色
!!!!注意:一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin
use <n你的数据库名称> # 例如:use study
db.createUser({user: "user",pwd: "123456",roles: [ { role: "dbOwner", db: "yourdatabase" } ]})
说明
- role: "dbOwner"代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等。充当账号管理员和超级管理员,可以为自己的数据库创建用户了
- 如果是读写角色的话,权限设置为role: "readWrite"
6、查看当前数据库用户
use <数据库名称>
show users
7、删除用户
删除用户必须由账号管理员来删,所以,切换到admin角色
use admin
db.auth("admin","password") # 登录上去
7.1、删除单个用户
db.system.users.remove({user:"XXXXXX"})
7.2、删除所有用户
db.system.users.remove({})
五、开启访问控制
1、为mongod.service编辑systemd单元文件。
要为MongoDB服务器启用访问控制,我们需要为mongod.service编辑systemd单元文件。
vim /usr/lib/systemd/system/mongod.service
2、修改文件内 Environment 值
在此文件中找到以下行
Environment="OPTIONS=-f /etc/mongod.conf"
并将其替换为
Environment="OPTIONS=--auth -f /etc/mongod.conf"
3、我们已经使用文本编辑器显式地编辑了systemd单位文件。因此,我们需要执行以下命令来通知systemd有关此更改。
systemctl daemon-reload
4、重新启动MongoDB服务以应用更改
systemctl restart mongod.service
5、要检查访问控制,请连接MongoDB shell并执行一些管理命令。
mongo
use admin;
show users;
这次show user命令引发身份验证错误,说明我们的访问控制已经启用。 现在,以管理员用户身份连接。
db.auth("ljh",passwordPrompt())
或者
db.auth("该数据库用户名","该数据库密码") # 例如:db.auth("admin","admin")
已成功使用特权用户执行命令“显示用户”。 MongoDB数据库的访问控制已启用。 登录数据库需要用 mongodb://username:password@121.4.81.217:27017/study
六、一些常用设置
(一)、防火墙设置
如果我们启动了防火墙策略,还需要允许Linux防火墙中的MongoDB服务传入流量,否则外网也无法访问到mongoDB
[root@VM-0-2-centos ~]# firewall-cmd --permanent --add-service=mongodb
success
[root@VM-0-2-centos ~]# firewall-cmd --reload #重新加载防火墙
success
(二)、开放端口
MongoDB默认端口号为27017
firewall-cmd --zone=public --add-port=27017/tcp #mongodb默认端口号
(三)、查看mongodb的网络状态
netstat -nltp|grep mongo
(四)、关闭selinux
selinux是
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#需要重启服务器生效
setenforce 0 #临时生效,重启服务器无效
七、参考文章
https://www.cnblogs.com/fb010001/p/14949548.htmlhttps://blog.csdn.net/live4046/article/details/108826809