본문 바로가기
MySql

MySQL 파이썬에서 mysqldb로 먼저 ssh

by 베이스 공부 2020. 9. 22.
반응형

Python에서 MySQLdb를 사용하여 원격 서버의 MySQL 데이터베이스에 연결하려고합니다. 문제는 먼저 호스트에 SSH를 연결 한 다음 거기에서 MySQL 서버에 연결해야한다는 것입니다. 그러나 내가 가진 문제는 MySQLdb가 SQL 서버에 연결하기 전에 SSH 연결을 설정하는 방법이없는 것 같습니다. 문서를 확인했지만 운이 없었습니다.

이것이 내가 연결하는 방법입니다.

conn = MySQLdb.connect(host = 'mysqlhost.domain.com:3306', user = 'user', passwd = 'password', db = 'dbname')

그러나 내가 정말로 필요한 것은 다음과 같습니다.

conn = MySQLdb.connect(sshhost = 'sshhost.domain.com', sshuser = 'sshusername', sshpasswd = 'sshpasswd', host = 'mysqlhost.domain.com:3306', user = 'user', passwd = 'password', db = 'dbname')

물론 그것은 단지 구성되어 있습니다. 누구든지 추천 할 수 있습니까?

 

해결 방법

 

MySQLdb.connect를 사용하기 전에 ssh 터널을 설정하십시오. 터널은 마치 mysql이 로컬에서 실행되는 것처럼 보이게 만들고 다음과 같이 설정합니다.

ssh user@host.com -L 9990:localhost:3306

여기서 로컬 포트 ​​9990은 원격 호스트의 3306에 바인딩되고 -L은 로컬을 의미하며 9990 : localhost : 3306은 LOCALPORT를 의미합니다.

conn = MySQLdb.connect (host = 'mysqlhost.domain.com:9990', user = 'user', passwd = 'password', db = 'dbname')

9990을 주목하십시오.

사용자의 공개 ssh 키를 host.com에 추가하면 터널을 설정할 때마다 비밀번호를 입력 할 필요가 없습니다 (공개 키 인증 사용).

파이썬 내에서이 작업을 수행해야하는 경우 터널을 설정하기 위해 파이썬 내에서 호출 할 수있는 python-to-ssh 바인딩 라이브러리가 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/9070708

 

 

반응형

댓글