BOARD

강좌·기초

PHP mysqliconnect 접속 테스트 및 연결 오류 해결 가이드

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 7회 작성일 26-10-19 15:15

본문

PHP mysqli_connect 접속 테스트 및 연결 오류 해결 가이드

그누보드 운영 및 PHP 개발 환경에서 mysqli를 이용한 표준 데이터베이스 접속 테스트 코드를 확인하고, 연결 오류 원인을 파악하여 해결하는 방법을 안내합니다.

PHP mysqli_connect 접속 테스트 표준 구문

PHP에서 mysqli를 이용하여 데이터베이스 접속 성공 여부를 판정하고 에러 코드 및 호스트 정보를 출력하는 표준 코드는 다음과 같습니다.

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
 echo "Error: Unable to connect to MySQL.". PHP_EOL;
 echo "Debugging errno: ". mysqli_connect_errno(). PHP_EOL;
 echo "Debugging error: ". mysqli_connect_error(). PHP_EOL;
 exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great.". PHP_EOL;
echo "Host information: ". mysqli_get_host_info($link). PHP_EOL;

mysqli_close($link);
?>

접속 결과 및 확인 방법

  • 정상 접속 시: Success: A proper connection to MySQL was made! The my_db database is great. 문구와 함께 Host information: Localhost via UNIX socket 형태의 호스트 정보가 출력됩니다.
  • 접속 실패 시: mysqli_connect_errno()와 mysqli_connect_error()를 통해 구체적인 에러 번호와 메시지를 확인할 수 있습니다.

Warning: mysqli_connect(): (HY000/2002) No such file or directory 오류 원인과 해결 방법

오류 발생 원인

Warning: mysqli_connect(): (HY000/2002): No such file or directory 오류는 PHP 코드에서 MySQL 데이터베이스에 접속할 때 데이터베이스 서버가 켜져 있지 않거나, PHP가 MySQL에 접근할 때 사용하는 유닉스 소켓(UNIX socket) 경로가 잘못 지정된 경우, 또는 호스트 주소 설정 문제로 인해 발생합니다.

해결 방법

이 오류를 해결하려면 환경에 따라 다음 조치를 취할 수 있습니다.

  • 호스트 주소 변경 (localhost 대신 127.0.0.1 사용)PHP 파일에서 데이터베이스 접속 코드를 작성할 때 호스트를 localhost로 지정하면 유닉스 소켓을 통해 접속을 시도하므로 소켓 파일 경로 오류가 발생하기 쉽습니다. 이 경우 호스트 값을 127.0.0.1로 변경하면 TCP/IP 방식으로 접속하여 소켓 설정 없이 해결할 수 있습니다.
    $conn = mysqli_connect('127.0.0.1', 'root', 'PASSWORD', 'DATABASE');
  • MySQL 서버 상태 확인 및 재시작데이터베이스 서버 서비스 자체가 중지되어 있는지 확인하고, 서버를 재시작하거나 관련 앱(MariaDB 등)의 서비스를 중지 후 다시 시작해 정상 상태인지 점검합니다.
  • 소켓 경로 설정 확인 및 수정특정 NAS나 서버 환경(예: 시놀로지 NAS 웹 스테이션 등)에서는 실제 존재하는 소켓 파일명(예: mysqld10.sock)과 PHP 설정의 소켓 경로가 일치하지 않아 발생할 수 있습니다. 이 경우 SSH를 통해 심볼릭 링크를 생성하거나 php.ini 파일의 mysqli.default_socket 경로를 올바른 소켓 파일 경로로 수정해 주어야 합니다.

getaddrinfo failed 오류 점검 가이드

php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution 오류는 PHP가 데이터베이스 호스트 주소를 IP 주소로 변환(DNS 이름 해상도)하는 과정에서 실패할 때 발생합니다. 이를 해결하기 위해 다음 사항을 점검하십시오.

1. DB 호스트 주소 입력 확인

코드 내 mysqli_connect 함수에 전달된 호스트 주소가 정확한지 확인하십시오.

  • localhost 사용 시: localhost 대신 127.0.0.1을 사용하여 이름 해상도 과정을 생략하고 직접 IP로 접속을 시도해 보십시오.
  • 도메인 사용 시: 도메인 이름이 올바르게 설정되어 있는지, 서버에서 해당 도메인을 해석할 수 있는지 확인이 필요합니다.

2. 네트워크 및 DNS 설정 점검

  • 호스트 지정의 중요성: 클라이언트에서 지정한 호스트 이름이나 IP는 데이터베이스 서버의 접근 권한 설정과 직결됩니다. 예를 들어, localhost 대신 도메인 이름을 사용하면 클라이언트 연결이 로컬 IP가 아닌 외부 IP로 향할 수 있어 권한 오류나 연결 실패가 발생할 수 있습니다.
  • 서버 환경 확인: 서버의 네트워크 설정이나 DNS 구성이 올바른지 확인하십시오. 이름 해상도가 일시적으로 실패하는 경우 서버의 네트워크 상태를 점검해야 합니다.

상황별 판단 및 대응 가이드

  • 상황: No such file or directory (2002) 오류 발생
    • 선택 기준: localhost는 유닉스 소켓을 참조하므로 소켓 파일 경로가 일치하지 않거나 서비스가 비정상일 때 발생합니다.
    • 다음 행동: 코드 내 호스트를 127.0.0.1(TCP/IP 방식)로 변경하여 테스트합니다. 실패 시 MySQL 서비스 상태를 확인하고, NAS 등 특수 환경이라면 php.ini의 mysqli.default_socket 경로를 실제 소켓 파일 위치로 수정합니다.
  • 상황: getaddrinfo failed 오류 발생
    • 선택 기준: 호스트 주소의 이름 해상도(DNS) 과정에서 실패한 경우입니다.
    • 다음 행동: 호스트 주소를 명시적인 IP인 127.0.0.1로 수정하여 이름 해상도 과정을 생략합니다. 이후에도 지속되면 서버의 네트워크 및 DNS 설정을 점검합니다.

실전 FAQ

  • Q. 127.0.0.1로 변경해도 2002 오류가 계속 발생합니다.
    • A. MySQL 서비스 자체가 중지되었거나 디스크 용량 부족, 방화벽 차단 등으로 통신이 거부되는 상황일 수 있습니다. MySQL 서비스 재시작 및 서버 로그(error_log)를 확인하십시오.
  • Q. 에러 처리 구문을 넣었는데도 화면이 빈 페이지로 나옵니다.
    • A. PHP 설정에서 에러 출력이 비활성화되었을 수 있습니다. mysqli_connect_errno()와 mysqli_connect_error()를 사용하여 에러 내용을 명시적으로 출력하도록 코드를 작성했는지 확인하십시오.

참고자료

운영 사례·사용자 경험

기타 참고자료

댓글목록

등록된 댓글이 없습니다.