워드프레스를 사용하여 웹 사이트를 구축하려고 할 때
데이트베이스 연결 오류가 나온다면
많이 당황하게 된다.
분명 설정 부분은 완벽하다고 생각했는데
어디서 잘못되었는지 모를 때 구글 검색하여
여러 사이트 방문해서 알려주는 방법 대로 처리 하였지만
역시나 똑같은 오류만 반복될 뿐
해결되지 않았다.
어떤 원인으로 인해 오류가 나타났는지 몰라서
두시간 동안 삽질을 시작했다.
엄청난 삽질을 통해 얻은 내용을 까먹기 전에 기억하려고 글을 작성한다.
데이터 베이스 연결 중 오류 |
단계 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 연결이 되지 않는다면
다른 방법을 찾아봐야 할 것이다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
'공부방 > 서버' 카테고리의 다른 글
mariadb 설치 및 설정 방법 가이드 (1) | 2023.09.08 |
---|---|
손 쉽게 nginx 1.24 설치 하는 노하우 공개 (0) | 2023.09.08 |
[해킹] sql injection 해킹 시나리오 (1) | 2023.08.10 |
리눅스 - tomcat ssl 인증서 설치 및 갱신 (1) | 2023.08.10 |
리눅스 crontab 명령어를 사용하여 로그 기록 자동으로 지우기 (1) | 2023.08.02 |
nginx error log : socket() failed (24: Too many open files) (0) | 2023.07.12 |
도커 설치 및 실행 방법 (1) | 2023.07.11 |
windows cmd 창에서 tasklist 명령어 사용 방법 (1) | 2023.05.09 |