[윈도우10 64bit] APM MySQL 5.7 설치과정 정리

[윈도우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:MySQLbin 폴더(MySQL 압축 푼 폴더bin)의 환경변수 등록작업을 할겁니다. 이걸 해두면 명령프롬프트(관리자)로 MySQL 명령어를 입력할 때 C:MySQLbin 폴더로 일부러 찾아들어가지 않아도 됩니다.
Win+R → control 입력. 그리고 시스템→고급 시스템 설정→고급 탭의 “환경 변수(N)” 단추를 누릅니다.

 

시스템 변수(S)에서 Path를 찾아 더블 클릭하면 환경 변수 편집 창이 나타나는데, “새로 만들기(N)” 버튼을 누르고 위 스크린 샷처럼 MySQL을 설치한 경로에서 bin폴더까지의 값을 입력한 후 빠져나옵니다.

이제 mysql을 구동하기 위한 기본 system DB를 생성해줘야 합니다. ZIP버전에는 이게 포함되어있지 않거든요.
명령프롬프트를 관리자 권한으로 띄우세요.(Win+X 누르면 선택할 수 있습니다.)

 

mysqld.exe –initialize
라고 입력합니다. 몇 초 지나면 다시 C:Windowssystem32> 처럼 입력란이 나올겁니다.

  

C:mysqlbinmysqld.exe –install
라고 입력합니다.(경로 전체를 넣어줘야 합니다. 잘 안되면 경로를 따옴표로 묶습니다. “C:mysqlbinmysqld.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:MySQLbin 폴더(MySQL 압축 푼 폴더bin)의 환경변수 등록작업을 할겁니다. 이걸 해두면 명령프롬프트(관리자)로 MySQL 명령어를 입력할 때 C:MySQLbin 폴더로 일부러 찾아들어가지 않아도 됩니다.
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:mysqlbinmysqld.exe –install
라고 입력합니다.(경로 전체를 넣어줘야 합니다. 잘 안되면 경로를 따옴표로 묶습니다. “C:mysqlbinmysqld.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 대신)

CC BY-NC-ND 4.0