mongodb4.2 已经支持分布式事务了,按奈不住重新安装个数据库,本教程采用了rpm包安装的方式,用过命令行参数启动嫌麻烦(笑哭表情),还想默认一装上就是支持开机启动的(懒得搜开机启动脚本o(* ̄︶ ̄*)o )、于是采用了RPM包吧
我记录了一下安装过程供大家参考
1、从官网下载安装文件
下载地址 https://www.mongodb.com/download-center/community
选择如下图
下载了4个包安装一下
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.3-1.el7.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-mongos-4.2.3-1.el7.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-tools-4.2.3-1.el7.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-shell-4.2.3-1.el7.x86_64.rpm
rpm -ivh mongodb-org-server-4.2.3-1.el7.x86_64.rpm
rpm -ivh mongodb-org-mongos-4.2.3-1.el7.x86_64.rpm
rpm -ivh mongodb-org-shell-4.2.3-1.el7.x86_64.rpm
rpm -ivh mongodb-org-tools-4.2.3-1.el7.x86_64.rpm
2、安装完成后启动服务
开机脚本位置 /usr/lib/systemd/system/mongod.service
bin文件目录位置 /bin/mongo
配置文件目录 /etc/mongod.conf
日志目录 /var/log/mongodb/mongod.log (帮助查找问题使用,启动失败一般都是文件权限问题)
启动服务
service mongod start
3、查看是否已经支持开机启动
systemctl status mongod.service
显示 mongod.service; enabled;Active: active (running)就是启动成功了。
4、连接数据库创建管理员、数据库
mongo mongodb://127.0.0.1:27017
连接成功后mongodb命令行操作
创建管理员用户
use admin;
db.createUser({user: "admin",pwd: "admin",roles: [{ role: "root", db: "admin" }]})
创建一个普通数据库
use testdb;
db.createUser({user: "milo",pwd: "123456789",roles: [{ role: "dbAdmin", db: "testdb" }]})
修改用户权限
db.grantRolesToUser( "milo",[{role:"readWrite", db:"testdb"}])
5、安全扩展 修改端口,远程连接,打开用户认证
编辑配置文件vim /etc/mongod.conf 修改后如下:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo# network interfaces
net:
port: 28128
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
security:
authorization: enabled
#operationProfiling:#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
别忘了防火墙开放端口
firewall-cmd --zone=public --add-port=28128/tcp --permanent #开放28128端口
firewall-cmd --reload #立即生效
保存文件重新启动服务即可 service mongod restart
如果重新启动失败请查看日志,如果出现STORAGE [initandlisten] Failed to set up listener: SocketException: Permission denied,这问题把我折腾死了,查看日志各种改文件权限,用户权限通通不管用,万万没想到最后还是解决了。
解决方法如下:
必须将SELinux配置为允许MongoDB在基于Red Hat Linux的系统(Red Hat Enterprise Linux或CentOS Linux)上启动。如果处于强制模式,可以通过访问SELinux的相关端口来解决权限问题
可以通过运行
semanage port -a -t mongod_port_t -p tcp 28128
没有这个命令那就去安装
安装成功后再执行
semanage port -a -t mongod_port_t -p tcp 28128
然后重启mongod服务,发现可用。
6、连接需要验证的数据库
执行命令
mongo mongodb://127.0.0.1:28128/testdb -u milo -p 123456789
我用的nodejs端连上去就可以玩了。喜欢命令操作的大神下一条不用看了。
7、GUI客户端
Navicat Premium 收费软件 土豪直接用 ,程序员凭本事用
NoSQL Manager for MongoDB 我用的免费版
我用的 NoSQL Manager for MongoDB 免费版的还可以、附连接截图如下: