본문 바로가기
코딩해보니/PHP

PHP와 MySQL(MariaDB) 연동- 윈도우(Windows) 환경

by 위시랜 2024. 7. 12.

PHP와 MySQL(MariaDB) 연동- 윈도우(Windows) 환경
PHP와 MySQL(MariaDB) 연동- 윈도우(Windows) 환경

PHP가 서버 사이드 스크립트 언어이지만 당연히 프로그래밍 언어의 하나다.

프로그래밍 언어를 배우고 개발을 하기 위해서는 필요한 환경을 준비하는 것은 필수다.

 

PHP도 마찬가지로 웹 서버와의 연동이 필요해지고, 나아가 DB(Database)와도 연동이 필요하다.

PHP로 개발을 하면서 가장 많이 사용하는 DB가 MySQL 혹은 MariaDB 일 것이다.


MySQL vs MariaDB

MySQL과 MariaDB는 웹 개발자 입장에서 보면 거의 같은 DB라고 해도 무관할 정도로 비슷하다.

 

MySQL은 오픈 DB 중 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS)이다. 

MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있고, 특히 PHP와 함께 웹 개발에 많이 사용되고 있다. 

 

MariaDB는 MySQL이 2010년에 썬마이크로시스템즈와 오라클이 합병되면서 많은 MySQL 개발자들이 썬마이크로시스템즈를 떠나며 본인들만의 프로젝트를 진행하게 되는데, 이 중 MySQL의 창시자인 몬티 와이드니어가 만든 프로젝트가 MariaDB다. 

그래서 MariaDB와 MySQL의 호환성은 매우 높다. 

오히려 MySQL보다 더 개선된 버전이라고 해도 과언이 아니다. 

2015년에 AWS 개발자가 MariaDB를 사용해야 할 10가지 이유를 제시하기도 했다.

 

관련해서는 찾아보면 많은 정보들이 있으니 여기서는 요 정도로 언급하고자 한다.


MySQL(MariaDB) 다운로드 및 설치

MySQL이 든 MariaDB든 공식 사이트에서 다운로드하고 설치한다.

MySQL : https://www.mysql.com/에 접속 후 Downloads 메뉴 이용하고 무료 이용 가능한 Community (GPL) Downloads 메뉴를 클릭하면 된다.

MySQL 다운로드 메뉴
MySQL 다운로드 메뉴

https://dev.mysql.com/downloads/ 바로 접속해도 무관하다.

해당 페이지에서 "MySQL Community Server"를 클릭하자.

MySQL 무료 라이선스 버전 다운로드 메뉴
MySQL 무료 라이선스 버전 다운로드 메뉴

아래와 같이 다운로드할 MySQL의 버전과 운영체제를 확인하고, MSI Installer 버전에 [Download] 버튼을 클릭한다.

현재(24년 7월) 9.0.0 버전이 최신인 것을 알 수 있다.

MySQL 다운로드
MySQL 다운로드

끝인 줄 알았더니 또 뭔가 나온다... ㅎㅎ 로그인하거나 가입하라고 하는데 그냥 다운로드하고 싶다면 아래 "No thanks, just start my download."를 클릭하자. 파일 하나 다운로드하는데 참 많은 과정을 만들어 놨다 싶다.

MySQL 다운로드
MySQL 다운로드

다운로드한 파일을 더블 클릭해 설치를 진행한다.

혹시라도 아래와 같은 경고 창이 뜨고 설치 진행을 할 수가 없다고 하는 경우를 만나는 사람도 있을 수 있다.

MySQL 설치 시 나타나는 경고 창
MySQL 설치 시 나타나는 경고 창

"This application requires Visual Studio 2019 x64 Redistributable. Please install the Redistributable then run this installer again" --> Visual Studio 2019 x64 재배포 가능 패키지가 필요하니 설치 후에 다시 진행하라고 한다. 

이런 경우는 Microsoft Visual C++ 재배포 가능 패키지 최신 지원되는 다운로드 페이지에서 다운로드해 설치를 진행하면 된다.

 

설치가 진행되면 [Next] 버튼을 눌러가면 된다.

라이선스 동의에 체크하고 [Next].

MySQL 9.0.0 설치 진행 과정
MySQL 9.0.0 설치 진행 과정

다음으로 설치 타입을 선택하는데, 우리는 PHP 웹 개발이 주목적이므로 [Typical]을 클릭하고, 다음 화면에서 [Install] 버튼을 클릭한다.

MySQL 9.0.0 설치 진행 과정
MySQL 9.0.0 설치 진행 과정

설치가 진행되고 진행 간 사용자 계정 컨트롤 창이 뜨면서 허용 여부를 묻는데 [예]를 클릭한다.

MySQL 9.0.0 설치 진행 중 "사용자 계정 컨트롤" 창 확인 시 [예] 클릭
MySQL 9.0.0 설치 진행 중 "사용자 계정 컨트롤" 창 확인 시 [예] 클릭

아래와 같이 설치가 진행되고, 완료되면 MySQL 설정을 실행할지 여부에 체크하고 [Finish] 버튼을 클릭한다.

MySQL 9.0.0 설치 진행 과정 및 완료 화면
MySQL 9.0.0 설치 진행 과정 및 완료 화면

MariaDB는 https://mariadb.org/에 Download 메뉴를 통해 다운로드하고 설치할 수 있다.

 

여기서는 MySQL을 중심으로 확인해 본다.


MySQL 설정 

설치가 완료되고 환경 설정 프로세스가 진행되는데, 시스템 설정을 변경하게 되므로 UAC(사용자 계정 컨트롤)이 실행된다. [예]를 클릭하고 넘어가면 오른쪽 화면과 같이 환경 설정 시작 화면을 볼 수 있다.

[Next] 버튼을 클릭해 설정을 시작한다.

MySQL 9.0.0 - 환경 설정 시작
MySQL 9.0.0 - 환경 설정 시작

Data Directory - 데이터 파일을 저장할 위치를 지정하는 것으로 원하는 위치로 지정할 수 있다.

MySQL 9.0.0 - 환경 설정 - 데이터 디렉터리 위치 확인
MySQL 9.0.0 - 환경 설정 - 데이터 디렉터리 위치 확인

다음으로 서버 설정 타입과 접속 포트 및 방화벽 설정 오픈 여부를 설정한다.

 

특별히 요구하는 바가 없다면 기본값으로 두고 [Next]를 누르자. 

접속 포트 3306은 기억하자. 

그리고 혹시나 3306포트를 다른 프로그램이 사용하고 있다면 충돌이 날 수 있으므로 이런 경우에는 필히 변경하자.

MySQL 9.0.0 - 환경 설정 - 설정 타입 및 접속 포트 설정 등
MySQL 9.0.0 - 환경 설정 - 설정 타입 및 접속 포트 설정 등

다음은 매우 중요한 Root 비밀번호 설정이다.

절대 까먹지 말자!!! 비번을 입력했다면 [Next] 버튼을 클릭하고 넘어간다.

여기서 유저를 바로 추가할 수도 있지만 넘어간다.

MySQL 9.0.0 - 환경 설정 - Root 비밀번호 설정
MySQL 9.0.0 - 환경 설정 - Root 비밀번호 설정

다음은 윈도우 서비스에 추가하는 것으로 서비스 이름을 정하고, 시스템이 시작되면 MySQL도 실행할지 여부를 설정한다. 계속 사용해야 하므로 기본값으로 하고 [Next] 한다.

MySQL 9.0.0 - 환경 설정 - 윈도우 서비스 관련 설정
MySQL 9.0.0 - 환경 설정 - 윈도우 서비스 관련 설정

다음은 서버 권한을 설정하는 항목인데, 첫 번째로 선택된 기본값으로 하고 [Next] 한다.

MySQL 9.0.0 - 환경 설정 - 서버 권한
MySQL 9.0.0 - 환경 설정 - 서버 권한

다음은 샘플 DB를 만들지 여부를 정하는 것인데 기본값으로 하고 [Next] 한다.

MySQL 9.0.0 - 환경 설정 - 샘플 데이터베이스
MySQL 9.0.0 - 환경 설정 - 샘플 데이터베이스

다음은 지금까지 설정한 값들을 적용하는 단계로, [Execute] 버튼을 클릭해 진행한다.

MySQL 9.0.0 - 환경 설정 - 적용 단계
MySQL 9.0.0 - 환경 설정 - 적용 단계

모든 과정이 완료되면 초록색 체크박스로 표시가 된다. [Next]를 클릭하자.

MySQL 9.0.0 - 환경 설정 - 적용 단계
MySQL 9.0.0 - 환경 설정 - 적용 단계

이제 모든 설정이 완료되었다. [Finish] 버튼을 클릭하자.

MySQL 9.0.0 - 환경 설정 - 완료
MySQL 9.0.0 - 환경 설정 - 완료


MySQL 설치 확인

설치 및 설정을 완료했으니 이제 정상적으로 동작하는지 확인하자.

우선 윈도우즈의 [시작] 버튼을 클릭해 앱 목록을 보면 [MySQL] 아래에 새롭게 추가된 것을 알 수 있다.

MySQL 9.0.0 - 설치 확인
MySQL 9.0.0 - 설치 확인

"MySQL 9.0 Command Line Client"를 클릭해 보자.

아래와 같이 비밀번호를 입력하라고 나온다. 앞서 설정한 Root 비밀번호를 입력하고 엔터를 누른다.

MySQL 9.0 Command Line Client - 실행 화면
MySQL 9.0 Command Line Client - 실행 화면

그럼 다음과 같이 MySQL에 콘솔로 접속하는 것을 알 수 있다.

MySQL 9.0 Command Line Client - 실행 및 MySQL 접속 화면
MySQL 9.0 Command Line Client - 실행 및 MySQL 접속 화면


PHP에서 MySQL 접속 확인

Nginx 설치 디렉터리 아래의 html 디렉터리에 mysql.php 파일을 만들고 아래와 같은 코드를 작성하자.

파일 위치 : C:\nginx-1.26.1\html\mysql.php

<?php

mysqli_report(MYSQLI_REPORT_OFF);

$mysqli = @new mysqli("localhost", "root", "설정한 루트 비밀번호");

if ($mysqli->connect_errno) {
  echo "MySQL 접속 <font color=\"red\"><b>실패</b></font>";
} else {
   echo "MySQL 접속 <font color=\"blue\"><b>성공</b></font>";
}
?>

 

그리고 브라우저에 http://localhost/mysql.php로 접속해 본다.

아래와 같이 보기 좋게 오류가 난다.

PHP - MySQL 접속 테스트

Fata error: Uncaught Error: Call to undefined function mysqli_report() in C:\nginx-1.26.1\html\mysql.php:3 Stack trace: #0 {main} thrown in C:\nginx-1.26.1\html\mysql.php on line 3

 

이 에러는 PHP가 mysqli_report()라는 함수에 대해 전혀 인식이 되어 있지 않기 때문에 발생하는 문제이다.  어찌 보면 당연히 예상했던 결과다.

 

PHP와 Nginx를 연동하고 PHP 관련 설정을 전혀 건드리지 않았다.

phpinfo()  화면에서 mysqli 가 확인되는지 확인해 보면 찾을 수 없을 것이다.

혹은 명령 프롬프트에서 아래와 같이 실행해 봐도 확인이 가능하다.

C:\php-8.3.8>php -m | findstr mysqli

 

PHP 설치 디렉터리에 가보면 PHP 설정 파일인 php.ini 파일도 보이지 않고, php.ini-development 와 php.ini-production 파일이 보일 것이다. 이 두 파일 중 아무거나 복사해서 php.ini 파일로 변경하자.

 

나는 php.ini-deveopment를 php.ini로 변경했다.

PHP 설정 파일 생성
PHP 설정 파일 생성

php.ini 파일을 열어 다음 항목을 확인하고 수정한다.

먼저 extension_dir을 설정한다.

 

아래와 같이 되어 있는 사항을

; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"

 

아래와 같이 수정하자.

; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir
;extension_dir = "./"
; On windows:
extension_dir = "C:/php-8.3.8/ext"

extension_dir = "C:/php-8.3.8/ext" 이 부분을 설정하는 것인데 C:/php-8.3.8은 PHP를 설치한 경로이다. 각자 설치한 경로에 맞게 작성하면 된다.

 

다음으로 mysqli를 확장 모듈로 설정해야 하는데, php.ini 파일 내용 중에 extension이라고 되어 있는 목록들이 주석 처리되어 있는 것이 있을 것이다. 없어도 아래 항목을 추가한다.

extension=php_mysqli

그런 다음 실행 중인 php-cgi.exe를 재시작한다.

php-cgi.exe -b "127.0.0.1:9000" -c php.ini

그런 다음 phpinfo() 화면을 확인해 보면 아래와 같이 mysqli 항목이 enabled로 표시되어 있는 것을 알 수 있다.

phpinfo()에서 mysqli 로드 여부 확인
phpinfo()에서 mysqli 로드 여부 확인

명령 프롬프트에서 다음과 같이 실행해 봐도 mysqli가 있는지 알 수 있다.

C:\php-8.3.8>php -m | findstr mysqli
mysqli

이제 다시 http://localhost/mysql.php로 접속해 보면 아래와 같이 확인할 수 있다.

PHP-MySQL 연동 확인
PHP-MySQL 연동 확인

PHP를 설치하고 웹 서버인 Nginx와 DB 서버인 MySQL까지 연동이 되었다면 PHP로 개발할 수 있는 기본은 모두 갖췄다고 할 수 있다.

 

PHP와 웹서버 DB까지 개별로 다운로드하고 설치하고 설정하는 것은 여간 번거로운 게 아니다.

 

PHP를 처음 시작하고 PHP 언어를 배워보고자 하는 사람은 PHP 언어를 해보고 싶은데 웹 서버도 설치하고 DB도 설치하는 과정이 매우 복잡해 보일 수 있다.

 

이런 경우 XAMPPAMPPS 등을 이용하면 간편하게 PHP 개발 환경을 구성할 수 있다.

 

- 끝 -

 

 

상기 상품 배너는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글