IT Japan

RDS Aurora 연결시에 MySQL-python에 빠지다 본문

MySQL

RDS Aurora 연결시에 MySQL-python에 빠지다

swhwang 2016. 7. 29. 18:08
반응형

이전 게시물 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
Comments