更新时间:2024-02-07 GMT+08:00

连接数据库

通过Python连接实例的方式有无需下载SSL证书连接和用户下载SSL证书连接两种,其中使用SSL证书连接通过了加密功能,具有更高的安全性。

GeminiDB Mongo新实例默认关闭SSL数据加密,开启SSL请参考开启SSL

前提条件

  1. 连接数据库的弹性云服务器必须和GeminiDB Mongo实例之间网络互通,可以使用curl命令连接GeminiDB Mongo实例服务端的IP和端口号,测试网络连通性。

    curl ip:port

    返回“It looks like you are trying to access MongoDB over HTTP on the native driver port.”,说明网络互通。

  2. 在弹性云服务器上安装Python以及第三方安装包pymongo。推荐使用pymongo3.10版本。
  3. 如果开启SSL,需要在界面上下载根证书,并上传到弹性云服务器。

连接代码

  • SSL开启
    import ssl
    import os
    from pymongo import MongoClient
    # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全
    # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV
    rwuser = os.getenv('EXAMPLE_USERNAME_ENV')
    password = os.getenv('EXAMPLE_PASSWORD_ENV')
    conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin"
    connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000,ssl=True, ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_match_hostname=False,ssl_ca_certs=${path to certificate authority file})
    dbs = connection.database_names()
    print "connect database success! database names is %s" % dbs
  • SSL关闭
    import ssl
    import os
    from pymongo import MongoClient
    # 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全
    # 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV
    rwuser = os.getenv('EXAMPLE_USERNAME_ENV')
    password = os.getenv('EXAMPLE_PASSWORD_ENV')
    conn_urls="mongodb://%s:%s@ip:port/{mydb}?authSource=admin"
    connection = MongoClient(conn_urls % (rwuser, password),connectTimeoutMS=5000)
    dbs = connection.database_names()
    print "connect database success! database names is %s" % dbs

URL中的认证数据库必须为“admin”,即“authSource=admin”。