[MongoDB] 安装与配置
安装
安装方式1:yum
参考
https://docs.mongodb.com/manual/tutorial/i...
安装完后的配置文件
/etc/mongod.conf
bindIp: 172.0.0.1 改为 bindIp: 0.0.0.0
启动mongo:
systemctl start mongod
参考官网文档
下载地址:
https://www.mongodb.com/download-center/co...
官网安装文档:
https://docs.mongodb.com/manual/tutorial/i...
下载后解压到:
/usr/local/mongodb
配置环境变量:
vim /etc/profile
export MONGODB_HOME=/usr/local/mongodb
PATH="${JAVA_HOME}:${PATH}:${GRADLE_HOME}/bin:${MAVEN_HOME}/bin:${MYSQL_HOME}/bin:{PYTHON_HOME}:${ZOOKEEPER_HOME}/bin:${GROOVY_HOME}/bin:${JENKINS_HOME}:${GRADLE_USER_HOME}:${M2_HOME}:${MONGODB_HOME}/bin"
export PATH
source ~/.zshrc
不使用默认的地址:
/data/db
修改权限:
sudo chown -R $(whoami) /data
创建自定义的数据地址:
mkdir -p /data/mongodb
创建日志地址:
mkdir -p /data/logs/mongodb
官网配置文件说明:
https://docs.mongodb.com/manual/reference/...
创建配置文件:
vim /usr/local/mongodb/bin/mongodb.conf
systemLog:
destination: file
path: "/data/logs/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/data/mongodb"
journal:
enabled: true
processManagement:
fork: true # 以守护程序的方式启动,即在后台运行
net:
bindIp: 0.0.0.0 # 允许所有连接
port: 27017
setParameter:
enableLocalhostAuthBypass: false
启动mongo:
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
配置开机启动(未验证):
cd /etc/init.d
vi mongodb(创建启动文件,给予执行权限,内容如下,确保下面启动和关闭的命令可以正常执行)
#!/bin/sh
# chkconfig: 2345 75 15
# description: mongodb
### BEGIN INIT INFO
# Provides: mongodb
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO
EXE_FILE=/usr/local/mongodb/mongodb-linux-x86_64-3.6.4/bin/mongod
CONFIG_FILE=/usr/local/mongodb/mongodb-linux-x86_64-3.6.4/bin/mongodb.conf
#. /lib/lsb/init-functions
MONGOPID=`ps -ef| grep mongod| grep -v grep| awk '{print $2}'`
test -x $EXE_FILE || exit 0
case "$1" in
start)
ulimit -n 3000
$EXE_FILE --config $CONFIG_FILE
;;
stop)
if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
fi
;;
status)
ps -aux| grep mongod
;;
*)
log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
exit 1
esac
exit 0
service mongodb start //启动mongodb服务
chkconfig mongodb on //开启开机启动
参考:
https://blog.csdn.net/ztx114/article/detai...
使用systemctl方式参考:
https://www.jianshu.com/p/d4ae4f5d283a
进入mongo:
/usr/local/mongodb/bin/mongo --port 27017
此时,不需要任何密码就可以登录
所以,需要配置账号密码
use admin;
db.createUser( {user: "admin",pwd: "admin123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]});
db.adminCommand( { shutdown: 1 } )
修改配置文件:
systemLog:
destination: file
path: "/data/logs/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/data/mongodb"
journal:
enabled: true
processManagement:
fork: true # 以守护程序的方式启动,即在后台运行
net:
bindIp: 0.0.0.0 # 允许所有连接
port: 27017
setParameter:
enableLocalhostAuthBypass: false
security:
authorization: enabled
再次重启mongo
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/mongodb.conf
此时使用命令,已经无法查询出来
show users
使用授权命令:
db.auth("admin", "admin123456")
即可成功
参考:
http://blog.itpub.net/69902483/viewspace-2...
mongoduGUI:
https://www.cnblogs.com/shiweida/p/7692468...
进入mongo
mongo
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> db.enableFreeMonitoring()
{
"state" : "enabled",
"message" : "To see your monitoring data, navigate to the unique URL below. Anyone you share the URL with will also be able to view this page. You can disable monitoring at any time by running db.disableFreeMonitoring().",
"url" : "https://cloud.mongodb.com/freemonitoring/cluster/4HFMUQN67BMLJMH5SGZLFHTZI7V6TXJM",
"userReminder" : "",
"ok" : 1
}
问题解决:Unit mongod.service entered failed state
查看
cat /var/log/mongodb/mongod.log
发现是tmp中的mongo.lock没有被删除
rm /tmp/mongodb-27017.sock
即可解决
Aug 02 18:55:18 iZbp12ft4a1zgzzaoq9xgrZ sudo[3571]: pam_unix(sudo:session): session closed for user root
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ polkitd[2020]: Registered Authentication Agent for unix-process:3582:87621665 (system bus name :1.3488 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/A
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ systemd[1]: Starting MongoDB Database Server...
-- Subject: Unit mongod.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mongod.service has begun starting up.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ mongod[3596]: about to fork child process, waiting until server is ready for connections.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ mongod[3596]: forked process: 3599
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ mongod[3596]: ERROR: child process failed, exited with error number 14
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ mongod[3596]: To see additional information in this output, start without the "--fork" option.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ systemd[1]: mongod.service: control process exited, code=exited status=14
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ systemd[1]: Failed to start MongoDB Database Server.
-- Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mongod.service has failed.
--
-- The result is failed.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ systemd[1]: Unit mongod.service entered failed state.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ systemd[1]: mongod.service failed.
Aug 02 18:55:43 iZbp12ft4a1zgzzaoq9xgrZ polkitd[2020]: Unregistered Authentication Agent for unix-process:3582:87621665 (system bus name :1.3488, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disc
[root@iZbp12ft4a1zgzzaoq9xgrZ download]#
[root@iZbp12ft4a1zgzzaoq9xgrZ lib]# cat /var/log/mongodb/mongod.log
2019-08-02T18:55:43.660+0800 I CONTROL [main] ***** SERVER RESTARTED *****
2019-08-02T18:55:43.663+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] MongoDB starting : pid=3599 port=27017 dbpath=/var/lib/mongo 64-bit host=iZbp12ft4a1zgzzaoq9xgrZ
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] db version v4.0.11
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] git version: 417d1a712e9f040d54beca8e4943edce218e9a8c
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] allocator: tcmalloc
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] modules: none
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] build environment:
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] distmod: rhel70
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] distarch: x86_64
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] target_arch: x86_64
2019-08-02T18:55:43.674+0800 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid", timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2019-08-02T18:55:43.674+0800 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
2019-08-02T18:55:43.674+0800 F - [initandlisten] Fatal Assertion 40486 at src/mongo/transport/transport_layer_asio.cpp 693
2019-08-02T18:55:43.674+0800 F - [initandlisten]
***aborting after fassert() failure
[root@iZbp12ft4a1zgzzaoq9xgrZ lib]# rm /tmp/mongodb-27017.sock
rm: remove socket ‘/tmp/mongodb-27017.sock’? y
权限管理
对于admin库,可以
use admin
db.createUser( {user: "admin",pwd: "密码",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]});
是使用数据库,不是使用用户
use guache
通过使用数据库后,再去创建该数据库的用户
db.createUser( {user: "guache",pwd: "密码",roles: [ { role: "readWrite", db: "guache" } ]});
删除用户
db.dropUser('guache')
mongo-express
https://github.com/mongo-express/mongo-exp...
demo:
https://github.com/madhums/node-express-mo...
必须先安装完NodeJS,博客中有
npm install -g mongo-express
[root@iZbp12ft4a1zgzzaoq9xgrZ mongo-express]# npm install -g mongo-express
/usr/local/node-v10.16.1-linux-x64/bin/mongo-express -> /usr/local/node-v10.16.1-linux-x64/lib/node_modules/mongo-express/app.js
+ mongo-express@0.53.0
查看安装目录:
[root@iZbp12ft4a1zgzzaoq9xgrZ mongo-express]# npm list -g mongo-express
/usr/local/node-v10.16.1-linux-x64/lib
└── mongo-express@0.53.0
参考:
https://www.jianshu.com/p/b6ea35eb4762
https://blog.csdn.net/Algorithmguy/article...
pm2 安装
npm install -g pm2
pm2启动应用
pm2 start app.js --name mongo-express # 启动应用,并为之命名
查看pm2管理的应用运行状态
pm2 list
停止应用
pm2 stop mongo-express
从pm2列表里删除应用
pm2 delete mongo-express
mongo 角色具体说明
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
dbOwner:数据库拥有者,包含readWrite、dbAdmin、userAdmin
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root:只在admin数据库中可用。超级账号,超级权限
https://blog.csdn.net/shidebin/article/det...
https://blog.csdn.net/su377486/article/det...
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: