在Heroku应用程序中使用静态IP进行MySQL连接

lhcgjxsq  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(107)

我有一个python脚本,它连接到外部数据库并以JSON格式输出结果
此外部数据库只能由列入白名单的IP访问
但这个剧本是在Heroku主持的Laravel项目内部
我安装了一个静态IP插件(Proximo),但我需要如何设置MySQL连接

// Laravel controller retrieves data from the python script by calling it from the shell
  $dataString = shell_exec("python3 storage/app/path/to/python_script.py");
  $data = JsonHelper::loadFromString($dataString);

Python脚本:

def getData()
    with open(path + '/query.txt', 'r') as f:
        queryString = f.read()
    mydb = mysql.connector.connect(
        host="<database host>",
        user="<user>",
        password="<password>",
        database = '<database name>'
    )
    mycursor = mydb.cursor()
    mycursor.execute(queryString)
    return mycursor.toList()

if __name__ == '__main__':
  result = data()
  print(json.dumps(result, ensure_ascii=False, indent=4)
q3qa4bjr

q3qa4bjr1#

一种选择是使用fixie-wrench,这是一个通过SOCKS 5代理进行端口转发的库,它允许您的应用程序连接到MySQL,就像它在本地端口上运行一样。
Fixie-wrench是由Fixie开发并开放源代码的,Fixie是Heroku的一个静态IP插件的提供商,但该库可以与任何SOCKS 5代理(包括Proximo提供的代理)一起工作。
安装fixie-wrench之后,您可以执行./bin/fixie-wrench $localPort:$remoteHost:$remotePort来执行它。例如,要将www.example.com上的连接埠3306代理mysql.example.com到本机计算机上的连接埠13306:./bin/fixie-wrench 13306:mysql.example.com:3306 .

相关问题