2015-01-15 2 views
1

내가 PySQL를 사용하여 먼 MySQL의베이스를 액세스하는 응용 프로그램과 나는 최근 1.7.3로 1.7.1에서 장고를 업데이트 한 다음 fonction장고 + PyMSQL + WSGI

def db_query(username, password, host, db, query): 
    try: 
     db = pymysql.connect(host=host, user=username, passwd=password, db=db) 
    except pymysql.err.OperationalError as e: 
     errorLog = e 
     return [0, errorLog] 

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

    cur.execute(query) 
    result = cur.fetchall() 

    cur.close() 
    db.close() 

    return result 

있습니다. 업데이트 코드가 작동하기 전에. 이제, WSGI를 사용하여 프로덕션을 할 때 (로컬 개발 서버 나 서버 개발 서버가 아닌)에만 (2003, "[server.address]에있는 MySQL 서버에 연결할 수 없습니다 ([Errno 13 ] Permission denied) ")

pymysql을 최신 버전으로 업데이트했습니다.

나는 WSGI의 보안 문제를 해결하기 위해 1.7.2로 다운 그레이드를 시도했다. (딥 설치는 django == 1.7.2 (이것이 좋은 방법이라고는 확신 할 수 없다))와 이슈 여전히 존재합니다.

내가 무엇을 확인하려고 할 수 있는지에 대한 아이디어가 있습니까?

도움을 주셔서 감사합니다.

+0

이것은 MySQL 데이터베이스에 액세스 할 수있는 Apache 권한과 관련이 있다고 생각합니다. 당신은 명령을 시도해 볼 수 있습니다 :'setsebool -P httpd_can_network_connect_db 1' –

+0

놀라운, 그게 다야! 다시 작동합니다. 실제로 서버가 다시 작동하지 않을 때까지 재부팅되었으므로이 설정이 일시적이었습니다. 재부팅하려면 어떻게해야합니까? – Nielluin

+0

-P 옵션을 사용하면 변경 사항이 영구적으로 적용됩니다. 이 옵션이 없으면 부울은 다시 부팅 할 때 0으로 재설정됩니다. -P 옵션으로 명령을 실행 했습니까? –

답변

1

이것은 MySQL 데이터베이스에 액세스 할 수있는 Apache 권한과 관련이 있다고 생각합니다. 명령을 사용해 볼 수 있습니까?

setsebool -P httpd_can_network_connect_db 1 

-P 옵션을 사용하면 변경 사항이 계속 적용됩니다. 이 옵션이 없으면 재부팅 할 때 부울 값이 0으로 재설정됩니다.