파이썬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
댓글 입력