由于最近项目要使用mongoDB,在安装过程中各种尝试都不能远程访问mongoDB,提示权限认证相关的问题,网上查找各种资料,都没有解决问题,最后重新下载安装包,问题不再出现,问题原因可能是原有的安装包太旧,配置可能有一些兼容性问题。先不再纠结这个问题,现在按照新的源码包进行完整部署,做一个文档记录,请大家给出意见:
环境准备
- mongodb-linux-x86_64-3.2.10.tgz
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.10.tgz (腾讯云下载速度较快)
- jdk1.8
export JAVA_HOME=/usr/local/jdk8 #路径修改成实际路径
export JAVA_BIN=/usr/local/jdk8 #路径修改成实际路径
export PATH=JAVA_HOME/bin
export CLASSPATH=.:JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
- CentOS Linux release 7.4.1708 (Core)
正式安装
- cd /usr/local/mongodb/
mkdir data //创建data目录
mkdir data/db //创建db 目录,用于存储数据库数据
mkdir log //创建log日志目录,存储日志数据
- config文件配置
cd /usr/local/mongodb/ //切换到mongodb
mkdir conf // 创建config文件的目录
vim conf/mongoDB.conf // 创建并打开conf文件
# mongodb config file
port=27888 #端口
bind_ip= 127.0.0.1,192.168.105.142 #开启外网访问则为0.0.0.0
dbpath=/usr/local/mongodb/data/db #数据库存放
logpath=/usr/local/mongodb/log/mongodb.log #日志文件存放
fork=true #设置后台运行
# auth=true #开启认证`
先将auth=true注释,因为新部署的MongoDB还没有创建用户,如果直接开启,将会导致MongoDB无法启动
所以只要若是想要给MongoDB设置访问权限,在设置好账号密码后,将auth=true取消注释,重新启用下MongoDB即可
配置环境变量
- vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
- source /etc/profile #使得环境变量生效
启动
因为启动参数我们都配置到config中,所以直接以config形式来启动
mongod --config ../conf/mongoDB.conf
创建用户并分配权限
在这里我建议使用Studio 3T连接我们的MongoDB服务器来创建用户,没什么别的理由,就是简单罢了
先给你们截图操作一下在Studio 3T中我们该怎么设置用户权限选择要设置权限的库,添加用户
而admin库,我们要留一个管理员账户,分配root权限,以备不时之需。但是正常操作的时候,能不使用有root权限的用户,就不要使用,不仅容易进行一些危险操作,也会导致生成一些只有root用户才能操作的文件。换句话说就是影响数据库的稳定性
账户密码以及指定端口登陆mongoDB
cd /usr/mongoDB/bin
mongo -u "username" -p "password" -authenticationDatabase "admin" --port 27888
关闭mongoDB
> use admin
> db.shutdownServer()
***
ps -aux | grep mongo
killall mongo
kill -2 mongo
设置mongoDB自动重启
cd /etc/rc.d
# 将MongoDB的启用方式追加到rc.local文件内
echo '/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongoDB.conf' >> rc.local