【问题标题】:python remote database connect to mysqlpython远程数据库连接到mysql
【发布时间】:2018-10-18 00:52:12
【问题描述】:

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

在终端我做了:

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

之后,我可以使用以下设置从 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, "Access denied for user 'root'@'localhost' (using password: YES)")

所以我将 localhost 切换为 127.0.0.1:22 但后来我找不到在哪里添加我的 key_file.pem?

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

【问题讨论】:

    标签: python mysql ssh sqlalchemy mysql-workbench


    【解决方案1】:

    在本教程的帮助下解决了这个问题(不容易找到):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)`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多