【问题标题】:MongoDB Server ConfigurationMongoDB 服务器配置
【发布时间】:2016-05-27 11:29:55
【问题描述】:

我的本​​地主机上运行着一个 MongoDB 服务器。我编写了一个简单的 Python 程序,它使用“localhost”读取/写入数据库;但是,我想让其他客户端访问我的 MongoDB 服务器。目前,我不关心访问安全性,并愿意授予任何人访问权限。我应该如何配置 Mongo 服务器来执行此操作?

这是连接本地主机的简单程序。

    from pymongo import MongoClient
    connection = MongoClient("Localhost")
    db = connection.hockey.players
    results = db.find()
    print()
    print('+-+-+-+-+-+-+-+-+-+-+-+-+-+-')
    for record in results:
        print(record['name'] + ',',record['position'])
    connection.close()

我收到的错误消息: 文件“C:/Users/Peter/PycharmProjects/Test/helloWorld.py”,第 8 行,在 用于记录结果: 文件“C:\Python34\lib\site-packages\pymongo\cursor.py”,第 1097 行,在下一个 如果 len(self.__data) 或 self._refresh(): 文件“C:\Python34\lib\site-packages\pymongo\cursor.py”,第 1019 行,在 _refresh self.__read_concern)) 文件“C:\Python34\lib\site-packages\pymongo\cursor.py”,第 850 行,在 __send_message **kwargs 中) _send_message_with_response server = topology.select_server(selector) 中的文件“C:\Python34\lib\site-packages\pymongo\mongo_client.py”,第 777 行 文件“C:\Python34\lib\site-packages\pymongo\topology.py”,第 142 行,在 select_server 地址中)) 文件“C:\Python34\lib\site-packages\pymongo\topology.py”,第 118 行,在 select_servers self._error_message(selector)) pymongo.errors.ServerSelectionTimeoutError: x.y.z.w:27017: 超时

Process finished with exit code 1

下面是我当前的本地主机设置,如果我在托管 MongoDB 的客户端上运行它,它可以正常工作。 Current setup

谢谢

【问题讨论】:

    标签: python mongodb python-3.x database-connection database


    【解决方案1】:

    给他们您的 IP 地址和端口号(默认值:27017)以连接到您的服务器。还将mongod.conf 文件中的bindIp 编辑为bindIp: 0.0.0.0。要求他们使用以下方式连接到您的数据库:

    from pymongo import MongoClient
    connection = MongoClient("mongodb://your_ip:yourport")
    

    如果您使用的是 Windows,请创建配置文件 mongod.cfg。并将条目添加为

    systemLog:
        destination: file
        path: c:\data\log\mongod.log
    storage:
        dbPath: c:\data\db
    net:
        bindIp: 0.0.0.0
        port: 27017
    

    确保您已创建 logdb 文件夹或更改数据和日志文件夹所在的路径。 通过指定配置文件启动 mongodb。

    【讨论】:

    • 感谢您的快速跟进。我没有找到配置文件,所以我在 MongoDb bin 目录中创建了一个。我将 bindIp 标志设置为 0.0.0.0。我使用这个配置文件启动了 MongoDb 服务器。当我使用“localhost”连接字符串运行应用程序时,它运行正常。但是,当我将 localhost 更改为“mongodb://my_ip:27017”时,我仍然超时
    • 您使用的是哪个操作系统?如果是 linux,该文件将位于 /etc/mongod.conf
    • 当我输入 cmd 时,MongoDB 服务器似乎正在读取这个配置文件:mongod --config "/bin/mongodb.conf"。我在嘲笑一些参数时看到了一些错误消息。
    • 谢谢你的作品!另外,我的问题是我使用的是机器公共 IP 地址而不是私有地址
    【解决方案2】:

    验证您的本地接口是否已启动。它应该解释超时。

    ifup lo
    

    【讨论】:

      猜你喜欢
      • 2020-10-22
      • 2017-12-10
      • 2016-07-15
      • 2017-04-25
      • 2015-11-18
      • 2021-06-15
      • 2013-06-13
      • 2016-11-09
      • 2017-05-12
      相关资源
      最近更新 更多