最近搞国产化,踩了不少坑,记录一下,适合没接触过linux或者麒麟的人看看,保姆级教程
首先千万别被网上的介绍迷惑,还得是实践求证,之前查资料麒麟装mongo要么是从软件库装,要么是编译源码,然后开始尝试yum 安装,安装成功后却总是找不到,也起不来,源码编译到最后一步gcc编译不过去了 - -! 。最后尝试了下直接下载安装包去安装,好在成功了。
执行下列命令,安装依赖环境
sudo yum -y install unzip
sudo yum -y install libcurl-devel
sudo yum -y install openssl
sudo yum -y install openssl-devel
sudo yum -y install libxml2-devel
sudo yum -y install libxml2
sudo yum -y install glibc-static
sudo yum -y install libstdc++-static
sudo yum -y install libffi-devel
sudo yum -y install wget
一顿装就完事儿了
执行命令:
cd /usr/local // 进入安装目录
mkdir MongoDB // 创建MongoDB文件夹
cd MongoDB // 进入创建的MongoDB文件夹
mkdir source // 在MongoDB文件夹下创建source文件夹用于保存安装包
mkdir data // 在MongoDB文件夹下创建data文件夹用于后续数据库信息保存
mkdir log // 在MongoDB文件夹下创建log文件夹用于保存数据库日志
一顿建就完事儿了,如果这些命令有报错的且你解决不了的,直接用FTP,在上面建文件夹也行
找一个链接,下载mongo安装包,此处我用的是:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.2.8.tgz
通过FTP工具上传至把这个安装包上传到上一步创建的 MongoDB/source 文件夹下
然后解压:
cd /usr/local/MongoDB/source
tar -zxvf 安装包名称 -C /usr/local/MongoDB
cd /usr/local/MongoDB
mv 解压文件夹名称 mongodbServer // 将解压后的文件夹名称重命名为 mongodbServer
将 mongod 命令路径添加到系统命令中,这样就可以在任何路径都可以执行 mongod 命令。
在 /etc/profile 文件中添加以下配置:
export MONGODB_HOME=/usr/local/MongoDB/mongodbServer
export PATH=$PATH:$MONGODB_HOME/bin
MONGODB_HOME 的路径就是我们之前解压安装包后保存服务的路径
执行命令,使系统环境变量生效:
source /etc/profile
如果你折腾不懂这些linux命令,你可以直接去FTP上对应的目录新建这个文件,然后编辑文本就行,以下是命令操作的方式:
在 mongoDB 服务的 bin 文件夹下创建 mongod.conf 文件
cd /usr/local/MongoDB/mongodbServer/bin
vim mongod.conf
按 i 键进入编辑模式,写入以下配置:
storage:
dbPath: "/usr/local/MongoDB/data"
systemLog:
destination: file
path: "/usr/local/MongoDB/log/mongod.log"
logAppend: true
net:
port: 27017
bindIpAll: true
processManagement:
fork: true
按 esc 键退出编辑模式,输入 :wq 保存关闭文件。
在任意路径下执行:
mongod --config /usr/local/MongoDB/mongodbServer/bin/mongod.conf
如果你是天选之子,成功执行了,那恭喜你可以提早下班了,跳过这里往下看就行,我在这里遇到了报错,如下
很奇怪,明明显示这个环境已经安装,但是会报错,如果你也遇到了类似的问题,首先查一下
./mongod还需要哪些依赖:
命令:
ldd /usr/local/mongodb/bin/mongod
执行完之后如下图所示,确实是缺少环境
通过yum命令装,还是装完还是not found,真滴是无语,推荐直接下载对应的rpm包,这是我找的资源,并不一定是你需要的,我缺的是compat-openssl10,命令如下:
Wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
下载完了安装:
rpm -i compat-openssl10-1.0.2o-3.el8.x86_64.rpm
再次查看检查是否安装成功,如果没有not found了之后,尝试再次启动服务,出现下面这样的,就证明好了
任意路径下 执行:
mongo
进入mongo shell命令行界面,创建管理用户:
use admin // 进入 admin 数据库
db.createUser({ user: 'name', pwd: 'password', roles: [{ role: 'dbOwner', db: 'test' }] })
// 为名为 test 的数据库添加数据库管理员,账号为 name,密码为 password, 角色权限为 dbOwner
常用 mongoDB 角色
你可以根据需求选择权限
数据库用户角色: read、 readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色: __system
完事儿了如下图所示
在 /etc/init.d 文件夹下创建 mongod 文件:
vim /etc/init.d/mongod
写入如下配置(相关路径配置就是我们上面的配置路径)
#!/bin/bash
start() {
/usr/local/MongoDB/mongodbServer/bin/mongod --config /usr/local/MongoDB/mongodbServer/bin/mongod.conf
}
stop() {
/usr/local/MongoDB/mongodbServer/bin/mongod --config /usr/local/MongoDB/mongodbServer/bin/mongod.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo
$"Usage: $0 {start|stop|restart}"
exit 1
esac
(还是上面说的,如果整不明白,直接去FTP对应目录里建,然后粘进去就行)
保存后执行脚本权限命令:
chmod +x /etc/init.d/mongod
systemctl unmask mongod.service
启动 mongoDB 系统服务:
第一次启动前需先杀掉之前手动启动的 mongoDB 服务,
netstat -lnpt 命令查看服务id,kill -9 服务id 即可
杀掉之后 启动:
service mongod start
通过查看端口号看mongodb是否启动了
netstat -lanp | grep "27017"
运行后显示:
tcp 0 0 0.0.0.0:27017 0.0.0.0:* listen 1573/mongod
unix 2 [ acc ] stream listening 5874 1573/mongod /tmp/mongodb-27017.sock
可以看到,已启动成功,现在使用mongo客户端访问一下该数据库。
首先检查mongodb.conf文件
是不是有这个:bindip=127.0.0.1
注释掉,换成bindIpAll: true
此外,外部访问,需要防火墙放行:
firewall-cmd --zone=public --add-port=27017/tcp --permanent
//防火墙firewall-cmd放行27017端口,然后重启防火墙
firewall-cmd --reload
至此,大功告成!
参考资料:./mongod的时候提示找不到共享库文件libcrypto.so.10 - 简书
Linux系统下MongoDB安装教程_DecadentF的博客-CSDN博客_linux安装mongodb
linux mongodb服务启动命令行,Linux下的mongodb服务监视脚本(启动服务)_chinhoyoo的博客-CSDN博客
远程centos7服务器上的mongodb报错'serverSelectionTimeoutMS'_闭关苦炼内功的博客-CSDN博客