[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

【Mongodb】安装与配置

【Mongodb】安装与配置

不使用默认的地址:
/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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!