파이썬3 MySQL 접속 실패

조회수 3076회
import pymysql
import MySQLdb
'''
db = MySQLdb.connect(host="13.209.68.158",    # your host, usually localhost
                     user="Woo",         # your username
                     passwd="cbnuroot123",  # your password
                     db="CBNU")        # name of the data base

# you must create a Cursor object. It will let
#  you execute all the queries you need
cur = db.cursor()

# Use all the SQL you like
cur.execute("SELECT * FROM User")

# print all the first cell of all the rows
for row in cur.fetchall():
    print (row[0])

db.close()

'''
# Open database connection
db = pymysql.connect(host='13.209.68.158', user='접속ID', password = '접속pw',
                     db ='데베이름',charset='utf8mb4')

# prepare a cursor object using cursor() method
cursor = db.cursor()

# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")

# Fetch a single row using fetchone() method.
data = cursor.fetchone()

print ("Database version : %s " % data)

# disconnect from server
db.close()

기본적인 mysql 연결 소스입니다. 라이브러리 사용이 문제인가 하여 pymysql과 MySQLdb 둘다 나눠서 주석처리하고 실행시켜봤지만,

Traceback (most recent call last):
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 958, in connect
    **kwargs)
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\socket.py", line 724, in create_connection
    raise err
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\socket.py", line 713, in create_connection
    sock.connect(sa)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\any\Desktop\python\db2.py", line 25, in <module>
    db ='CBNU',charset='utf8mb4')
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 704, in __init__
    self.connect()
  File "C:\Users\any\AppData\Local\Programs\Python\Python36\lib\site-packages\pymysql\connections.py", line 1005, in connect
    raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '13.209.68.158' (timed out)")

다음과 같은 time out 오류가 뜨네요 -_-; 접속 권한 문젠가 하여, root로 접속해서 '접속ID'에 권한부여도 해봤지만, 여전히 접속이 안되는데 뭐가 문제일까요?ㅠㅠ 해당 13.209.68.158 ip는 AWS에서 지원한 ec2 서버 주소입니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • aws 의 rds 로 생성된 서비스인가보네요?

    aws 를 잘 사용하려면 기본적인 네트웍 지식은 필수입니다.

    기본적으로 aws는 vpc 환경에서 운영됩니다.

    기본적으로 private 환경에서 운영되기 때문에 외부로 서비스가 노출이 안됩니다.

    명시적으로 외부로 서비스를 오픈해줘야 합니다.

    igw(Internet Gateway) 를 사용하여 외부로 오픈해줘야 합니다.

    먼저 aws의 vpc에 관련된 서비스들(nat, subnet, igw) 를 학습해보시기 바랍니다.

    • 답변 감사합니다. 하지만 EC2로 생성한 서비스였습니다 ㅠ 이 경우 또한 외부접속 권한을 igw를 사용해야 하나요? 알 수 없는 사용자 2018.5.13 00:08
    • 권한이 아니에요-.- ec2의 인스턴스도 vpc내에 생성됩니다. 포트 개방하고 그리고 ec2내에 mysql 을 생성한 거라면 기본적으로 remote 연결을 못하게 되어 있을겁니다. 즉 두가지를 해결해야 합니다. 정영훈 2018.5.13 00:31

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)