我有一台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上的数据库:
但是,当我尝试类似“ 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通过密钥文件进行访问?还是这一切都错了?谢谢!
答案 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)`