不使用默认端口时mongo的几个坑

来源:互联网 发布:淘宝助理如何使用 编辑:程序博客网 时间:2024/05/16 18:00

背景:
在企业安全中,比较基础的一块就是:资产漏洞管理;
巡风(关于巡风,点击此处了解)可以用来做这件事,当然某些地方需要根据自己实际情况修改、增加,这里不赘述;
其数据库为mongo;

在初步使用过程中,为了方便后续的开发,需要使用pycharm集成的mongo可视化插件,
这其中我们遇到了一些"不使用默认端口的坑"(大佬一笑而过。。。)

遇到两个问题:

1、无法shell连接数据库,mongo报错,

Image.png

指定使用的端口也没用

Image.png

2、pycharm的mongo插件无法连接,mechanism尝试default,报错如下,

Image.png

看到支持的机制,那就尝试MONGODB-CR,这次报错不一样了:认证失败 ;但那里认证失败了呢,不知道。。。

Image.png

解决:

1、首先搞清

mongo与mongod

要先启动mongod(有d的一般是守护进程,或服务本身),再mongo(连接服务)

2、发现巡风的数据库xunfeng配置时,指定了端口 65521,而不是默认的27017;

而巡风的配置文件Config.py里会写明,所以用巡风的脚本Run.sh启动时,完全没有问题;

Image.png

Image.png

但是,如果自己以shell方式要连接mongo时,如果以默认命令 mongo去连接就会报错,认证失败;

那么,就在在启动mongod的时候指定 端口65521来启动,

# mongod --port 65521 --dbpath=/var/lib/mongodb

(或更改mongod的配置文件,并# mongod --config /etc/mongodb.conf 以生效);

Image.png

Image.png

然后去连接mongo 127.0.0.1:65521/xunfeng

成功!

Image.png

3、pycharm中安装mongo可视化插件时

会提示认证失败,一直找不到原因;

直到通过以上步骤shell连接上数据库,查看用户信息后才发现:

Image.png

(你说坑不坑,错误提示里是没有的啊,为啥当时没有多试一个;))

在这里选择相应的方式

 Image.png

  Image.png

成功

这里记着要用使修改后的conf生效(但为啥:每次都要指定,或用配置文件启动 ),这样才会连接成功;

总结:

其实就是数据库的服务启动时的问题,

1、没有启动服务

2、在没有使用默认端口的情况下没有指定使用的端口,(配置文件里也没有写)

后续

启动mongod服务的,写在开机启动服务里,并在后台运行 就好;这样不用每次都手动启动

进入 /etc/rc.local 

在最后写 启动mongod的命令

mongod --port 65521 --dbpath=/var/lib/mongodb &

(或更改mongod的配置文件,并# mongod --config /etc/mongodb.conf &);

注:

1、记得写 “空格 &” 以后台形式运行;不然会在启动的时候卡住

2、如果有exit 0,上述命令写在exit 0 的前面;(exit 0 表示退出当前脚本,后续命令不会执行)

有不对之处,望大家能交流、指正;

谢谢!