python远程数据库连接mysql

izkcnapc  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(505)

我有一台mac电脑,想连接到amazonlinux服务器的mysql数据库。
在候机楼我做到了:

sudo ssh -v -i "key_file.pem" -L 22:localhost:22 ubuntu@public.ip.compute.amazonaws.com

之后,我可以通过以下设置从mysql workbench中的mac连接到amazon上的db:

但是,当我尝试类似于:“mysql-h localhost--protocol=tcp-u root-p”或尝试使用sqlalchemy时:

engine = create_engine("mysql+mysqldb://root:password_mysql_amazon@localhost/db?host=localhost?port=3306")

我得到一个错误:(1045,“拒绝访问用户'root'@'localhost'(使用密码:yes)”)
所以我把localhost改为127.0.0.1:22,但是我找不到在哪里添加我的key\u file.pem?
那么,如何在sqlalchemy中安排到需要通过ssh使用密钥文件访问的服务器的连接呢?还是我做错了?谢谢!

nlejzf6q

nlejzf6q1#

在本教程的帮助下解决了这个问题(不容易找到):https://medium.com/@amirziai/query-your-database-over-an-ssh-tunnel-with-pandas-603ce49b35a1。
因为我使用了sqlalchemy,所以我没有为pandas+mysqldb/mysqlclient做说明,但是:

from sshtunnel import SSHTunnelForwarder
server = SSHTunnelForwarder(
        (host, 22),
        ssh_username=ssh_username,
        ssh_private_key=ssh_private_key,
        remote_bind_address=(localhost, 3306))

server.start()
engine = create_engine(
        'mysql+mysqldb://root:db_pass@127.0.0.1:%s/db' % server.local_bind_port)`

相关问题