How to connect to mysql server with SSL from a flask app

前端 未结 3 816
花落未央
花落未央 2020-12-20 19:26

I want to connect to a mysql server via flask and

app.config[\'SQLALCHEMY_DATABASE_URI\'] = \'mysql://your-username:your-password@localhost/schema\'
<         


        
相关标签:
3条回答
  • 2020-12-20 19:47

    In case you need to use a Cloud-based MySQL service, this configuration will be slightly different. For example,

    In Azure, it will be,

    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://your-username:your-password@localhost/your-schema?ssl_ca=BaltimoreCyberTrustRoot.crt.pem'
    

    wherein, the file BaltimoreCyberTrustRoot.crt.pem can be downloaded from here.

    Similarly, the solution for AWS is discussed here.

    0 讨论(0)
  • 2020-12-20 20:04

    Another solution is to use sqlalchemy.engine.url.URL to define the URL.

    sqlUrl = sqlalchemy.engine.url.URL(
        drivername="mysql+pymysql",
        username=db_user,
        password=db_pass,
        host=db_host,
        port=3306,
        database=db_name,
        query={"ssl_ca": "main_app/certs/BaltimoreCyberTrustRoot.crt.pem"},
    )
    create_engine(sqlUrl)
    

    You can include SSL parameters as a dictionary in the query argument.

    This approach is useful if you are using Flask to initialize the SqlAlchemy engine with a config parameter like SQLALCHEMY_DATABASE_URI rather than directly using create_engine.

    0 讨论(0)
  • 2020-12-20 20:06

    You can add theses informations in your URI like this :

    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://your-username:your-password@localhost/schema?ssl_key=MyCertFolder/client-key.pem&ssl_cert=MyCertFolder/client-cert.pem'
    

    Or using the SQLAlchemy create_engine, take a look to this post

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题