удаленная база данных Python подключиться к MySQL - PullRequest
0 голосов
/ 17 октября 2018

У меня есть компьютер Mac, и я хочу подключиться к базе данных mysql сервера Amazon Linux.

В терминале я сделал:

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

После этого я смог подключиться к базе данныхна Amazon от Mac в MySQL Workbench со следующими настройками: 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' (с использованием пароля: YES)")

Поэтому я переключил localhost на 127.0.0.1:22, но потом не смог найти, куда добавить свой key_file.pem?

Так как мне организовать соединение в SQLalchemy с этим сервером, к которому нужно обращаться с помощью ключа-файл через ssh?Или все об этом идет не так?Спасибо!

1 Ответ

0 голосов
/ 17 октября 2018

Решено с помощью этого урока (его нелегко найти): 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)`
...