python远程数据库连接到mysql

时间:2018-10-17 13:31:54

标签: python mysql ssh sqlalchemy mysql-workbench

我有一台Mac计算机,想连接到Amazon Linux服务器的mysql数据库。

我在航站楼做了:

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

此后,我可以使用以下设置从Mac在MySQL Workbench中从Mac连接到Amazon上的数据库: enter image description here

但是,当我尝试类似“ 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'的访问(使用密码:是)”)

所以我将本地主机切换为127.0.0.1:22,但后来找不到添加key_file.pem的位置?

那么我该如何在SQLalchemy中安排与该服务器的连接,该服务器需要通过ssh通过密钥文件进行访问?还是这一切都错了?谢谢!

1 个答案:

答案 0 :(得分:0)

借助本教程(不容易找到)解决了该问题:https://medium.com/@amirziai/query-your-database-over-an-ssh-tunnel-with-pandas-603ce49b35a1

自从我使用SQLalchemy以来,我没有对熊猫+ 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)`