일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- one tab buy
- 칸칸
- 스테이크
- youtuber
- 리눅스
- しまじろう
- 영단어
- fish
- 돼지갈비
- 여름
- 시마지로
- 라면
- 자동차
- paypay
- 신쥬쿠
- Sekai Entertainment
- Shimajirou
- 시스템관리
- 전철
- 일본
- 돈까스
- TOY
- 사이타마
- 코라쿠엔
- 米沢、팽이
- 토익
- 원탭바이
- 동경 모터쇼
- 점심
- 명령어
- Today
- Total
IT Japan
RDS Aurora 연결시에 MySQL-python에 빠지다 본문
이전 게시물 Amazon RDS의 Aurora을 시작하고 Python에서 연결에서 파생 된 코네타. Mac에서 AWS RDS (Aurora)에 Python으로 클라이언트 연결하기 위해 MySQL-python을 넣었다.
$ sudo pip install MySQL-python
그리고, Mac에서 RDS에 Aurora로 연결을 시도했다. mysql 클라이언트에서 문제없이 연결할 수있는 것이지만, Python에서 "Access denied"에서 연주되었다.
>>> import _mysql >>> conn = _mysql.connect(host = 'hogetest-cluster.cluster-**********.us-west-2.rds.amazonaws.com' , db = "order_items" , user = 'hogetest001' , passwd = 'hogetestpasswd' ) Traceback (most recent call last): File "<stdin>" , line 1 , in <module> _mysql_exceptions.OperationalError: ( 1045 , "Access denied for user 'hogetest001'@'xxx.xxx.xxx.xxx' (using password: YES)" )
|
'hogetest001'@'xxx.xxx.xxx.xxx'부분은 클라이언트의 외부 용 IP가 들어간다. 사용자는 모든 호스트에서 액세스 가능하다는 상태로 작성되어있다. mysql 클라이언트에서 문제없이 연결할 수있다. 공식 문서를 봐도 설명에 문제는 없을 것 같다. 무엇이 잘못거야.
... 그리고 방황 했더니, Aurora 요금이 비싸기 때문에 시간 낭비를 잡아 싶지 않다. Aurora의 인스턴스는 스냅 숏에 제거하여 RDS MySQL 인스턴스에서 조사 계속했다. 여기에서도 역시 mysql 클라이언트는 문제없이 연결 할 수 있고, MySQL-python은 NG.
여기에 또 다른 커넥터를 사용해 보자하면 mysql-connector-python 설치 시도했다. 가 자신의 환경에서 $ sudo pip install mysql-connector-python이 이끼 통하지 않기 때문에 zip 다운로드.
$ wget http://cdn.mysql.com/Downloads/Connector-Python/mysql-connector-python-2.0.4.zip
$ unzip mysql-connector-python-2.0.4.zip
$ cd mysql-connector-python-2.0.4
$ sudo python setup.py install
설치 했더니, Python에서 연결 시도. 샘플 데이터는 mysql 클라이언트에서 투입이 끝난 상태.
>>> import mysql.connector >>> config = { 'user' : 'hogetesuser' , 'password' : 'hogetestmysqlpassword' , 'host' : 'hogetestmysql.**********.ap-southeast-1.rds.amazonaws.com' , 'db' : 'order_items' } >>> conn = mysql.connector.connect( * * config) >>> cur = conn.cursor(buffered = True ) >>> cur.execute( 'select * from drinks' ) >>> rows = cur.fetchall() >>> print (rows) [( 1 , 2 , u 'Ebisu' ), ( 2 , 3 , u 'Asahi Super Dry' ), ( 3 , 1 , u 'Kirin Lager' )]
|
그리고,이 후 Aurora의 인스턴스를 스냅 샷에서 복원하고 mysql-conector-python에서 동일하게 연결할 수 있는지 확인했다. 이지만.
혹시 MySQL-python 경우, MySQL (Aurora) 측에서 hogetest001'@'xxx.xxx.xxx.xxx '를 별도로 만들어 주면 안되지 않을까? 생각 다시 끈질 기게 해 본다. 이 시점에서 Aurora 인스턴스는 삭제하고 있었으므로, MySQL 인스턴스에서 다시 시도했다.
우선 mysql 클라이언트에서 연결하여 사용자 작성.
mysql> create user hogetest001@'xxx.xxx.xxx.xxx' identified by 'hogetestpasswd'; mysql> grant all on order_items.* to hogetest001; mysql> select user,host from mysql.user; +--------------+-----------------+ | user | host | +--------------+-----------------+ | hogetest001 | % | | hogetest001 | xxx.xxx.xxx.xxx | | rdsadmin | localhost | +--------------+-----------------+
|
이 상태에서 MySQL-python에서 연결 재시도.
>>> import _mysql >>> conn = _mysql.connect(host = 'hogetestmysql.**********.ap-southeast-1.rds.amazonaws.com, db="order_items", user=' hogetest001 ', passwd=' hogetestpasswd') >>> conn.query( 'select * from drinks' ) >>> result = conn.use_result() >>> row = result.fetch_row() >>> while row: ... print row ... row = result.fetch_row() ... (( '1' , '2' , 'Ebisu' ),) (( '2' , '3' , 'Asahi Super Dry' ),) (( '3' , '1' , 'Kirin Lager' ),) |
것으로, MySQL x Python 커넥터의 거동 정리.
mysql-connector-python
MySQL에서 모든 호스트 (%)에서 액세스 할 수있는 사용자가 있으면 연결 가능.
MySQL-python
모든 호스트 (%)에서 액세스 할 수있는 사용자 만이 접속이 통하지 않는다.
명시 적으로 호스트 이름을 지정한 사용자를 만드는 것이 필요.
후자는 mysql 클라이언트에서 연결 가능한 것이니까, 빠져 버렸다. Aurora와 MySQL 외에 MariaDB 기타 호환되는 DB는 일반적인 현상이 될 것이라고 생각하기 때문에 조심하고 싶다.
'MySQL' 카테고리의 다른 글
Solr + RDB 연계 - MySQL과 PostgreSQL (0) | 2016.07.29 |
---|---|
Mac (Yosemite)에서 Homebrew 다시 설치. (0) | 2016.07.29 |
Replication (0) | 2016.05.25 |
MySQL-MHA를 이용한 Multi-Master HA 구축 (0) | 2016.05.25 |
Cacti의 MySQL감시방법 (0) | 2016.04.20 |