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
'MySql' 카테고리의 다른 글
MySQL 중복 필드를 덮어 쓰지 않고 SQL 덤프를 테이블로 가져 오는 방법 (0) | 2020.09.22 |
---|---|
MySQL PHP MySQL이 존재하지 않는 경우 데이터베이스 생성 (0) | 2020.09.22 |
MySQL 뒤로 버튼을 누를 때 강제로 다시로드 / 새로 고침 (0) | 2020.09.22 |
MySQL Joomla 1.7에서 AND로 'WHERE'절 조건을 작성하는 방법은 무엇입니까? 업데이트 할 데이터가 없습니다. (0) | 2020.09.22 |
MySQL 중첩 된 쿼리를 기반으로 테이블에서 SQL-Delete (0) | 2020.09.22 |
댓글