워드프레스 데이터베이스 연결 오류 해결하기: 나만의 해결 방법 by 김다이아2023. 9. 6. 16:23
반응형

워드프레스를 사용하여 웹 사이트를 구축하려고 할 때

데이트베이스 연결 오류가 나온다면

많이 당황하게 된다.

분명 설정 부분은 완벽하다고 생각했는데

어디서 잘못되었는지 모를 때 구글 검색하여 

여러 사이트 방문해서  알려주는 방법 대로 처리 하였지만

역시나 똑같은 오류만 반복될 뿐

해결되지 않았다.

어떤 원인으로 인해 오류가 나타났는지 몰라서

두시간 동안 삽질을 시작했다.

엄청난 삽질을 통해 얻은 내용을 까먹기 전에 기억하려고 글을 작성한다.

데이터 베이스 연결 중 오류

 

 

단계 1: MariaDB와 PHP 연동 테스트

먼저, MariaDB와 PHP가 올바르게 연동되었는지 확인하기 위해 admin.php 파일을 생성한다.

admin.php 파일을 텍스트 편집기로 열고 다음 코드를 추가한다.

<?php
$db = new mysqli('localhost', 'your_db_username', 'your_db_password', 'your_db_name');

if ($db->connect_error) {
    die('Database connection failed: ' . $db->connect_error);
} else {
    echo 'Database connection successful!';
}
?>

 

admin.php 파일을 웹 브라우저에서 호출한다.

오류 없이 실행되면 데이터베이스 연결이 올바르게 설정된 것이다.

ㅠㅠ 슬프게도 DB와 연결이 되지 않은 상태이다.

Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in /var/www/html/admin.php on line 4

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): No such file or directory in /var/www/html/admin.php on line 4
Database connection failed: No such file or directory

 

단계 2: 데이터베이스 방화벽 확인

데이터베이스 연결 오류가 계속 발생하는 경우,

데이터베이스 방화벽 상태를 확인한다.

systemctl status mariadb 명령어를 사용하여 MariaDB 서비스 상태를 확인하며 

MariaDB가 정상적으로 실행 중인지 확인한다.

[root@localhost conf]# systemctl status mariadb
 mariadb.service - MariaDB 11.1.2 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Tue 2023-09-05 04:46:00 EDT; 21h ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 1707 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 1001 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 997 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 1098 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─1098 /usr/sbin/mariadbd

Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [Note] mysql.user: Table is fixed
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [ERROR] Missing system table mysql.roles_mapping; please run mysql_upgrade to create it
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [ERROR] Incorrect definition of table mysql.event: expected column 'definer' at position... char(77).
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [ERROR] Incorrect definition of table mysql.event: expected column 'sql_mode' at positio...ATE','POST
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [ERROR] mariadbd: Event Scheduler: An error occurred when initializing system tables. Di...Scheduler.
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 1 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1146: ...sn't exist
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: 2023-09-05  4:46:00 0 [Note] /usr/sbin/mariadbd: ready for connections.
Sep 05 04:46:00 localhost.localdomain mariadbd[1098]: Version: '11.1.2-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Sep 05 04:46:00 localhost.localdomain systemd[1]: Started MariaDB 11.1.2 database server.

 

mariadb가 동작 상태를 확인하던 중

localhost.localdomain으로 표시가 되어 있어서 admin.php 파일에서

localhost -> localhost.localdomain으로 수정하니

정상적으로 DB연결되는 것을 확인했다.

Database connection successful!

 

단계 3: 워드프레스 설정 파일 수정

워드프레스의 wp-config.php 파일을 수정하여 데이터베이스 연결 정보를 수정한다.

wp-config.php 파일을 열고 다음 라인을 찾아서 수정한다.

define('DB_HOST', 'localhost');

 

위 라인에서 'localhost'를 'localhost.localdomain' 또는

데이터베이스 호스트 주소로 변경 후 파일을 저장한다.

이제 웹 브라우저를 통해 워드프레스 사이트를 호출하면

데이터베이스 연결 오류가 해결되어야 한다.

만약 계속해서 데이터베이스 연결 문제를 겪는 경우,

데이터베이스 사용자 권한, 방화벽 설정, MariaDB 설정 등을 

다시 한 번 더 검토해보아야 한다.

이제 데이터베이스 연결 오류가 해결되어

워드프레스 웹 사이트가 정상적으로 작동하는 것을 확인했다.

 

 

 

끝으로 나와 비슷한 문제로 고생한 유저가 있다면 

내 방법대로 해보는 걸 추천한다.

 

만약 그래도 DB 연결이 되지 않는다면

다른 방법을 찾아봐야 할 것이다.

 

 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

반응형