[윈도우10 64bit] APM PHP 7.0 설치과정 정리 에 이어…
3. MySQL 설치
MySQL은 DB 프로그램입니다. 우리가 커뮤니티 게시판 페이지에 쓰는 글들은 DB에 쌓이는 겁니다. 최근(?) MySQL 호환되는 MariaDB라는 게 나왔고 로딩속도가 MySQL보다 빠르다고 입소문이 좋게 났는데, 저는 일단 관련문서가 인터넷에 많이 존재하는(그래서 문제를 비교적 쉽게 해결할 수 있는) MySQL이 (저같은) 일반 유저용으로 좀더 적합하다고 생각합니다.
※ 공식 문서 : https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html
※ 옵션 파일에 대한 가이드 : https://dev.mysql.com/doc/refman/5.7/en/option-files.html
Apache나 PHP보다 설치 난이도가 높은 편인데, 제가 했으니까 여러분들도 하실 수 있을 거예요. ^^
https://dev.mysql.com/downloads/mysql/
에 접근하여 MySQL Community Server 5.7 압축파일을 받습니다.
▲ ZIP Archive를 받으면 되는데, 비트 선택은 본인 윈도우/아파치/PHP bit를 따라가면 됩니다.
▲ 번거롭게 가입/로그인할 필요는 없습니다.
———————————-
※ 2018. 06. 10. 추가
아래 스샷을 보면 아시겠지만, 다운로드 페이지에는 기본적으로 최신 버전이 보입니다. 그런데 이 포스팅은 5.7버전 설치과정 정리 글이지요? 그러니까 MySQL 5.7 버전을 받아서 따르는 게 탈이 없습니다.
▲ Looking for previous GA versions 를 눌러서 골라 받으면 됩니다.
MySQL 8.0 버전으로 설치하겠다 하시면 말리지 않는데, 문제에 대한 대응도 본인이 직접 하세요.
▲ 예를 들어 이런 문제를 겪을 수 있습니다.
———————————-
Installing MySQL on Microsoft Windows Using a noinstall Zip Archive
(https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html)
일단 위 공식문서대로 따라해볼 건데, 막히는 부분이 생기면 다른 포스팅들 참고해 가면서 보완할게요.(윈도우10 64bit 기준)
———————————-
아래의 방법은 MySQL 5.7.17 버전까지만 적용 가능한 설치법입니다.
5.7.18 버전부터는 “3시간째삽질”님 댓글에 남긴 댓댓글을 참고해 주세요.
———————————-
2017. 11. 07. 추가.
카이스트 FTP 서버(링크)에 5.7.17버전이 내려갔다는 제보가 들어왔습니다.ㅠㅠ
그래서 기존 내용은 취소선 처리하고, “3시간째삽질”님 댓글에 남긴 댓댓글을 재구성하여 기존내용 하단에 추가하겠습니다.
———————————-
★ 기존 내용 ★
일단 윈도우는 관리자 계정 기준입니다.
압축을 풉니다. 제작사 측에서 밀고 있는 기본 경로는 C:\mysql 이라서 저도 여기에 압축을 풀었습니다.
MySQL이 실행될 때 설정파일을 세 경로에서 찾는다고 합니다. => Windows 디렉토리, C:\, MySQL 설치 경로.
그래서 셋 중 한곳에 옵션파일을 위치시키면 된답니다. 옵션파일은 my.ini 와 my.cnf 가 있는데, 컴퓨터는 ini파일을 먼저 찾고 cnf파일을 나중에 찾지만 혼동을 줄이기 위해서 my.ini 파일만 유지하는 게 좋다고 합니다.
위 스크린 샷을 보면 my-default.ini 파일이 있죠? 메모장 등의 에디터로 열어서 my.ini 파일로 저장해주면 그게 설정파일이 되는겁니다.
my.ini 파일의 내용은 이렇게 생겼는데,
basedir = C:/mysql
datadir = C:/mysql/data
port = 3306
처럼 주석(#) 제거+경로를 수정해주고 저장 후 빠져나옵니다(인코딩 옵션은 ANSI로 놔뒀습니다.). 붉은 텍스트로 표시한 경로는 본인이 MySQL 압축 푼 경로와 일치시킵니다. 폴더경로는 백슬래시(\)가 아닌 슬래시(/)로 써줘야 하고요. => 만약 백슬래시를 굳이 쓰고싶다면 2번 써주셔야 합니다. basedir = C:\mysql 이렇게…
아마 윈도우 탐색기로 MySQL 압축 푼 곳(C:\mysql) 들어가보면 data폴더가 없을걸요? 생성해 줍니다. 그리고 data폴더 안쪽은 아무것도 없게끔 비워야 앞으로 오류없이 진행될 겁니다.
이제 C:\MySQL\bin 폴더(MySQL 압축 푼 폴더\bin)의 환경변수 등록작업을 할겁니다. 이걸 해두면 명령프롬프트(관리자)로 MySQL 명령어를 입력할 때 C:\MySQL\bin 폴더로 일부러 찾아들어가지 않아도 됩니다.
Win+R → control 입력. 그리고 시스템→고급 시스템 설정→고급 탭의 “환경 변수(N)” 단추를 누릅니다.
시스템 변수(S)에서 Path를 찾아 더블 클릭하면 환경 변수 편집 창이 나타나는데, “새로 만들기(N)” 버튼을 누르고 위 스크린 샷처럼 MySQL을 설치한 경로에서 bin폴더까지의 값을 입력한 후 빠져나옵니다.
이제 mysql을 구동하기 위한 기본 system DB를 생성해줘야 합니다. ZIP버전에는 이게 포함되어있지 않거든요.
명령프롬프트를 관리자 권한으로 띄우세요.(Win+X 누르면 선택할 수 있습니다.)
mysqld.exe –initialize
라고 입력합니다. 몇 초 지나면 다시 C:\Windows\system32> 처럼 입력란이 나올겁니다.
C:\mysql\bin\mysqld.exe –install
라고 입력합니다.(경로 전체를 넣어줘야 합니다. 잘 안되면 경로를 따옴표로 묶습니다. “C:\mysql\bin\mysqld.exe” –install 이렇게…)
이건 MySQL을 윈도우 서비스에 등록하는 작업이에요. 삭제 옵션은 –remove 입니다.
다시 명령프롬프트(관리자)에서
mysqld –console –explicit_defaults_for_timestamp –skip-grant-tables
라고 치면…
이런 식으로 방화벽 해제 메세지가 뜰텐데 허용해 주시고…
명령프롬프트 창이 진행이 안되고 멈춘 것처럼 보일겁니다. 끄지 말고 Win+X 눌러서 명령프롬프트(관리자)를 하나 더 띄웁니다. 그리고
mysql -u root mysql
라고 치면
위 스크린 샷저럼 mysql> 이라고 뜨는데, 이제 여기에서 암호 설정작업을 할겁니다.
update user set authentication_string = password(‘새로운 비밀번호’) where user = ‘root’;
처럼 입력할 건데요, 비밀번호만 임의로 바꿔주면 됩니다. 계정은 root가 되는 거고요.
만약 비밀번호를 1111로 정하고자 한다면
update user set authentication_string = password(‘1111’) where user = ‘root’;
이라고 치면 됩니다.
그리고 이렇게 뜨면 성공이에요.
mysql> flush privileges;
라고 입력해 주고…
mysql> alter user ‘root’@’localhost’ identified by ‘설정했던 비밀번호’;
라고 치고
mysql> \q
라고 쳐서 잠깐 빠져나옵니다.
명령프롬프트 창으로 빠져나왔으면
mysql -u root -p
라고 입력 후 패스워드를 입력해 봅니다. mysql 명령창이 정상적으로 뜬다면 비밀번호 설정은 성공한 겁니다.
명령프롬프트 끄지 마세요!!!
———————————-
★ MySQL 5.7.18 버전부터 적용 가능한 설치법 ★
“Microsoft Visual C++ 2015 재배포 가능 패키지”
https://www.microsoft.com/ko-kr/download/details.aspx?id=53840
“Visual Studio 2013용 Visual C++ 재배포 가능 패키지”
https://www.microsoft.com/ko-kr/download/details.aspx?id=40784
▲ 선행설치 필요합니다. vcredist_arm.exe처럼 엉뚱한 것 받지 마시고, vcredist_x64.exe나 vcredist_x86.exe처럼 비트수에 맞는 것으로 받으세요. 그리고 2017 재배포 가능 패키지 등 상위버전이 설치되어 있으면 설치 안된다고 튕길 수 있는데, 그러면 그냥 넘어가세요.
https://dev.mysql.com/downloads/mysql/ 에서 받았던 ZIP파일의 압축을 풀어줍니다. 제작사 측에서 밀고 있는 기본 경로는 C:\mysql 이라서 저도 여기에 압축을 풀었습니다. (위 스샷처럼) 압축 푼 경로에 파일/폴더들이 바로 보이도록 해주면 됩니다.
이제 C:\MySQL\bin 폴더(MySQL 압축 푼 폴더\bin)의 환경변수 등록작업을 할겁니다. 이걸 해두면 명령프롬프트(관리자)로 MySQL 명령어를 입력할 때 C:\MySQL\bin 폴더로 일부러 찾아들어가지 않아도 됩니다.
Win+R → control 입력. 그리고 시스템→고급 시스템 설정→고급 탭의 “환경 변수(N)” 단추를 누릅니다.
시스템 변수(S)에서 Path를 찾아 더블 클릭하면 환경 변수 편집 창이 나타나는데, “새로 만들기(N)” 버튼을 누르고 위 스크린 샷처럼 MySQL을 설치한 경로에서 bin폴더까지의 값을 입력한 후 빠져나옵니다.
이제 옵션파일을 만들 차례입니다. 기본설정들을 지정하는 과정이에요.
(옵션파일 생성 없이 진행해도 되긴 하더군요. 그러면 DB데이터 저장 경로는 mysql 압축 푼 곳 하위의 data 폴더로 자동 지정됩니다.)
메모장을 띄우고(Win+R 누르고 notepad 입력), mysql 압축 푼 공간에 my.ini라는 파일로 저장을 해주세요.
인코딩 옵션은 ANSI나 ASCII로 지정하지 않고 UTF-8 같은 걸로 지정하면 mysqld: [ERROR] Found option without proceding group in config file C:₩mysql₩my.ini at line 1! 이런 에러 메세지를 볼 수 있으니까 주의하세요.
참고로 MySQL이 실행될 때 설정파일을 세군데 경로에서 순서대로 찾는다고 합니다. => Windows 디렉토리(%WINDIR%), C:\, MySQL 설치 경로(basedir).
그래서 셋 중 한곳에 옵션파일을 위치시키면 되며, 나중에 읽힌 파일이 우선적으로 적용된다고 하네요.
옵션파일은 my.ini 와 my.cnf 가 있는데, 컴퓨터는 ini파일을 먼저 찾고 cnf파일을 나중에 찾는다고 합니다.
혼동을 피하기 위해 하나의 파일만 사용하는 것이 가장 좋다고 하네요.
( https://dev.mysql.com/doc/refman/5.7/en/windows-create-option-file.html
https://dev.mysql.com/doc/refman/5.7/en/option-files.html )
my.ini 파일의 기본적인 형식은 위와 같습니다. 폴더경로는 백슬래시(\)가 아닌 슬래시(/)로 써줘야 하고요. => 만약 백슬래시를 굳이 쓰고싶다면 2번 써주셔야 합니다. basedir = C:\mysql 이렇게…
basedir 경로는 mysql 압축 푼 곳이고, datadir 경로는 DB데이터가 저장되길 원하는 공간입니다. 포트까지가 (제일) 기본적인 사항이라 생각하고, 추가를 원하는 항목이 있다면 레퍼런스 매뉴얼 뒤져서 더하면 됩니다.ㅋ
다 적었으면 저장 후 빠져나오세요.
※ 2019. 09. 27. 엄청헤맸다 님 제보
위의 설정대로 구성 후 아래의 DB 생성 테스트를 진행했지만 data폴더 안에 파일들이 생성되지 않는다? 이게 InnoDB 관련 문제인 것 같다? 그러면 my.ini 설정파일에 아래의 옵션을 추가하면 된다고 합니다.
innodb_flush_method=normal
이제 mysql을 구동하기 위한 기본 system DB를 생성해줘야 합니다. ZIP버전에는 이게 포함되어있지 않거든요.
명령프롬프트를 관리자 권한으로 띄우세요.(Win+X 누르면 선택할 수 있습니다.)
mysqld.exe –initialize
라고 입력합니다. 시간이 좀 지나면 C:₩₩Windows₩system32> 처럼 입력란이 돌아올 겁니다.
윈도우 탐색기로 MySQL 압축 푼 폴더로 들어가보면(C:\mysql) data 폴더가 생긴 것을 확인할 수 있을 겁니다.(DB데이터가 저장되는 경로입니다.)
data 폴더에 들어가보면 위 스샷처럼 DESKTOP-블라블라.err 형식의 에러로그 파일이 있을 겁니다. 메모장으로 이 파일을 열어보면…
root 계정에 대한 임시 비밀번호를 생성했음을 알려주는 메세지를 확인할 수 있습니다.
(참고로 Centos/Redhat 같은 리눅스 RPM패키지는 /var/log/mysqld.log 을 볼 것.)
화면 구석에 패스워드 잘 보이게 띄워놓고 다음 절차를 진행합니다.
명령프롬프트(관리자) 에서
C:\mysql\bin\mysqld.exe –install
라고 입력합니다.(경로 전체를 넣어줘야 합니다. 잘 안되면 경로를 따옴표로 묶습니다. “C:\mysql\bin\mysqld.exe” –install 이렇게…)
이건 MySQL을 윈도우 서비스에 등록하는 작업이에요. 삭제 옵션은 –remove 입니다. 언인스톨하려면 실행중인 mysql 서비스를 중지하고 –remove 옵션을 쓰면 돼요.
“제어판 – 관리도구 – 서비스”로 진입하여(빠르게 진입하려면 Win+R 누르고 services.msc 입력) MySQL 을 시작시킵니다. “상태”에 “실행 중”으로 뜨면 성공입니다.
(명령프롬프트(관리자)에서는 net start mysql 이라고 치면 됩니다. 실행중인 서비스를 중지하려면 net stop mysql 이라고 치면 되고요. 껐다 켜는 것을 이어서 하고 싶으면 net stop mysql & net start mysql 이라고 치면 됩니다.)
명령프롬프트(관리자) 에서
mysql -u root -p
라고 입력 후
Enter password:
라고 나오면 DESKTOP-블라블라.err를 띄워놨던 창을 보고 패스워드를 입력합니다.
패스워드가 복잡해서 외우기 어려우니까… 적당히 바꿔줍시다. 저는 예시 차원에서 1111로 바꿔보겠습니다.
mysql> 이라고 뜨면 아래처럼 입력하면 패스워드를 원하는 것(1111)으로 바뀝니다.
set password = password(‘1111’); => 도태됨. 언젠가는 remove될 것.
set password = ‘1111’;
(※ 레퍼런스 문서 참고 : https://dev.mysql.com/doc/refman/5.7/en/set-password.html )
(위 레퍼런스 문서에서는 set password = ‘1111’; 보다는 ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘1111’; 을 쓸 것을 권하는데, 실사용시 큰 차이는 없는 것 같습니다.)
바뀐 패스워드를 테스트하기 위해 \q 를 입력하여 mysql 모니터를 빠져나옵니다.
그리고 mysql -u root -p 를 다시한번 입력 후 패스워드를 넣어봅니다. mysql 모니터에 정상적으로 진입했다면 된겁니다.
★ 5.7.18 버전부터 적용 가능한 설치법에 대한 설명은 여기까지. ★
———————————-
이제
mysql이 단독으로 잘 돌아가는지 테스트해 봅시다. DB 혹은 테이블 하나 만들어보면 되겠죠?
일단 데이터베이스 리스트부터 확인해 봅니다.
show databases;
라고 입력합니다.
이렇게 나오네요. test 라는 이름의 DB를 만들겠습니다.
create database test;
show databases;
라고 입력합니다.
바로 전의 스크린샷과 위 스크린샷을 비교해보면 test 라는 DB가 생성되었음을 확인할 수 있습니다.
생성한 DB는 다음에 phpMyAdmin 구동 테스트하면서 삭제하기로 하고, 이제 \q 입력해서 빠져나옵니다.(MySQL 직접 입력은 너무 어려워요.ㅠㅠ)
마지막 단계가 남았는데요, PHP 설치폴더의 php.ini 설정파일에서 mysql 관련 dll파일의 주석을 풀어주라고… 다른 블로그들에 써있네요. php.ini 파일을 메모장으로 엽니다.
Ctrl+F로 Dynamic Extensions 라고 치면 ;extension=블라블라.dll 처럼 확장dll들이 세미콜론(;)으로 주석처리되어 있을겁니다.
;extension=php_mysqli.dll
;extension=php_pdo_mysql.dll
부분을 찾아서 주석을 풀어주고(; 삭제) 저장하고 빠져나오세요.
※ 2018. 03. 25. 추가.
최근 버전인 PHP 7.2.3의 php.ini 샘플파일에는(php.ini-production)
;extension=mysqli
;extension=pdo_mysql
처럼 php_ 와 dll 확장자가 빠져있는 형태로 바뀌었음을 확인했습니다.
이제 설정과정은 모두 끝났습니다. 명령프롬프트(관리자) 하나 띄워서 아파치 서비스 재시작해 줍니다. httpd.exe -k restart 입력!
PHP가 MySQL DB 연결을 제대로 하는지 테스트해 보겠습니다. 아래 내용을 비밀번호만 본인 것으로 바꿔서 아파치 htdocs 폴더에 mysqltest.php 파일로 저장합니다. (파일 인코딩은 UTF-8로 해주세요.)
참고로 test는 아까 안지웠던 DB명이에요. 현재 MySQL에 생성되어 있는 DB이름 아무거나 넣어주시면 됩니다.
<?php
echo “MySql 연결 테스트<br>”;
$db = mysqli_connect(“localhost”, “root”, “비밀번호“, “test”);
if($db){echo “connect : 성공<br>”;}
else{echo “disconnect : 실패<br>”;}
$result = mysqli_query($db, ‘SELECT VERSION() as VERSION’);
$data = mysqli_fetch_assoc($result);
echo $data[‘VERSION’];
?>
▲ 안된다는 피드백이 많아서 취소선 처리합니다.
▼ (2022. 01. 23. 추가) “웹공부중인 중딩”님께서 알려주신 코드입니다. 작동한다고 하십니다.
<?php
echo “MySql 연결 테스트<br>”;
$host = ‘localhost’;
$user = ‘root’;
$pw = ‘비밀번호‘;
$dbName = ‘test’;
$mysqli = new mysqli($host, $user, $pw, $dbName);
if($mysqli){echo “connect : 성공<br>”;}
else{echo “disconnect : 실패<br>”;}
?>
그리고 웹브라우저 주소창에 http://localhost/mysqltest.php 라고 입력합니다.
위 스크린 샷처럼 뜨면 성공입니다. 이번에는 DB가 만들어지는지 테스트해 보겠습니다. DB명은 test2 로 하겠습니다. 아래 내용을 비밀번호만 본인 것으로 바꿔서 아파치 htdocs 폴더에 mysqltest2.php 파일로 저장합니다. (파일 인코딩은 UTF-8로 해주세요.)
<?php
$conn = mysqli_connect(“localhost”,”root”,”패스워드“);
if (mysqli_connect_errno()){echo “MySQL 연결 오류: ” . mysqli_connect_error();}
$sql = “CREATE DATABASE test2”;
if (mysqli_query($conn,$sql)){echo “성공적으로 test2 가 만들어졌습니다.”;}
else {echo “데이터베이스 만들기 오류: ” . mysqli_error($conn);}
?>
그리고 웹브라우저 주소창에 http://localhost/mysqltest2.php 라고 입력합니다.
위 스크린샷처럼 성공메세지가 뜨면 된겁니다. 이제 phpMyAdmin 깔아서 웹브라우저로 DB 관리할 수 있게끔 꾸밀겁니다. 다음 포스팅에서 방법 설명하겠습니다.
———————
※ MySQL 참고 명령어들
1. MySQL 윈도우 서비스 중지하기
명령프롬프트(관리자)에서 net stop mysql 이라고 입력
2. 비밀번호를 생략하고 서비스 시작하기
명령프롬프트(관리자)에서 mysqld –skip-grant-tables 라고 입력. => 해당 명령 프롬프트는 서비스를 실행하느라 쓸 수 없게 되므로, 이후 작업은 명령프롬프트(관리자) 새로 하나 띄워서 진행해야 함. (5.7.17 버전까지만 유효)
———————————————
[우분투 18.04 데스크톱] LAMP : MariaDB 설치과정 정리(MySQL 대신)
[우분투 18.04 데스크톱] LEMP : MariaDB 설치과정 정리(MySQL 대신)