1-3) WINDOW 환경에서 APM설치하기 - MySQL 설치 및 연동
ALTER USER 'root'@'localhost' IDENTIFIED BY '원하는 비밀번호';
<본 글들은 각 주제에 대한 내용들을 철저히 초보자의 시선에서 구글링 및 연구, 실습을 통해 얻어낸 지식을 적어가는 글입니다.>
http://www.tcpschool.com/mysql/mysql_intro_intro
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
해당 포스트는 아래 포스트에 많은 참고와 검색을 기반으로 탄생했습니다
https://glow153.tistory.com/24?category=759024
[APM] Windows 10에서 APM 직접 설치하기 - MySQL 편
컴퓨터가 대기모드 나갔다 왔더니 한참 써놓은 글이 다 날아갔다... ㅂㄷㅂㄷ 고로 잡담 빼고 아주 빠르게 쓰기로 한다. 1. mysql 다운로드 https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Comm..
glow153.tistory.com
좋은 글 작성에 진심으로 감사드립니다 :)
0. 들어가기에 앞서
이제 윈도우에서 APM설치에 가장 마지막인 MySQL 설치 및 연동 과정이 남았다.
그럼 MySQL이 뭔지 왜 설치해야 하는지 알아보도록 하자
🔎SQL이란?
MySQL을 알아보기에 앞서 SQL이란 무엇인지 알아야 하는데 SQL은 Structured Query Language (구조적 질의 언어)의 줄임말로 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다.
말 그대로 쉽게 RDBMS에서 자료를 생성/읽기/수정/삭제하기 위해 처리하는 언어라고 생각하면 될 거 같다.
0-2 🔎그럼 MySQL은?
MYSQL AB사에서 만든 오픈소스 데이터 베이스로 다중 언어에 대한 뛰어난 연동성과 훌륭한 성능으로 널리 쓰이고 있다. 다중 사용자와 다중 쓰레드를 지원하며 C C++ PHP JAVA 등 다른 언어들에 다양한 API를 지원하고 있다.
또한 널리 알려진 표준 SQL 언어를 지원하는 점이 특징인데, 그로 인하여 초보자도 구글링으로 쉽게 접근하고 배울 수 있다(개인적인 생각이지만 경험이기도 한...)
0-3 🔎왜 필요한데?
앞서도 말했지만 서버에 데이터베이스는 필수 불가결하다. 정보를 처리할 능력도 있고 처리할 머리도 뛰어난데 안에 들어간 정보가 없으면 무슨 데이터를 전송하고 수신하는가..? 말 그대로 우리 백엔드에서 처리하는 정보를 저장하는 저장소 같은 역할을 한다.
📖 1. 설치해보자!
https://dev.mysql.com/downloads/mysql/ 여기서 해당하는 최신 버전의 MySQL을 설치해보자. 다운로드 버튼을 누르면 로그인 혹은 회원 가입하라고 하는데 및에 '됐고 그냥 다운로드할 거임'을 클릭하자
MySQL :: Download MySQL Community Server
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86
dev.mysql.com
📖 2. PATH 환경변수 추가
이제 윈도우에 환경변수를 추가해야 하는데 사실 나는 처음에 '이걸 왜 하나' 했는데 이걸 안 하면 나중에 터미널에서 mysql을 조작할 때 해당 디렉터리로 가야 하는 번거로움이 있다. 일단 난 이 정도로 알아두었다. 자세한 내용은 나중에 WinApi를 배우면.. :)
실행(Win키 + r)에서 SystemPropertiesAdvanced입력 -> 환경변수(N)
시스템 변수에 PATH, C:/APM/mysql/bin 추가
📖 3. mysql 루트 디렉터리에 경로 명시 파일 (my.ini) 추가
C:/APM/mysql 에 my.ini라는 메모장 파일을 추가하는데 이때 파일 저장 시 인코딩을 ANSI로 해야 한다 (<-중요)
파일에는 아래 내용을 적는다.
그 후 mysql 디렉터리에 'data'라는 폴더명의 폴더를 새로 만든다
[mysqld]
# set basedir to your installation path
basedir=C:/APM/mysql
#set datadir to the location of your data directory
datadir=C:/APM/mysql/data
port=3306
📖 4. MySQL 구동을 위한 system DB 생성
MySQL을 구동하기 위해 초기 필요한 시스템이 있는데, 이 시스템들을 한 번에 받기 위해 아래와 같은 명령어를 입력한다.
mysqld --initialize
📖 5. 자동 생성된 임시 root 비밀번호 확인
시스템 파일 생성 시 만들어진 임시 비밀번호를 확인하기 위해 해당 디렉터리에 생성된 (데스크톱 이름). err 파일을 열어 확인한다.
📖 6. MySQL 서비스 등록
관리자 권한으로 명령 프롬프트를 켜서 아래와 같은 코드를 입력한다.
C:\APM\mysql\bin\mysqld.exe --install
그리고 net start mysql을 입력하여 서비스를 실행하고 win + r 으로 services.msc를 통해 MYSQL이 실행 중인지 확인한다. 필자는 이미 한번 진행하며 해보았기에 오류가 뜬다.
생각해보니 이미 포스팅 때문에 APM을 제대로 지웠을 텐데? 하여 다시 원인을 구글링 하였다.
우선 문제는 서비스에서 MYSQL이 시작을 안 한다는 점이다.
해당 문제에 대한 해결책은 다음과 같다
1. 4번 과정에서 받는 data폴더 내용물 삭제 후 명령 프롬프트에 mysqld --initialize-insecure 으로 새로 다시 받는 방법
-> 한 100번 해본 거 같다. 다른 사람은 된다는데 나는 왜 안돼...
2. 3번 과정에서 생성한 my.ini파일의 인코딩이 utf-8로 되어 있는 건 아닌지?
-> 아니다.
3. 이미 서비스에서 실행되고 있는 거 아닌가?
-> 아니 ㅋㅋ 그게 무슨..
설마.. 하며 작업을 끝내고 다시 프롬프트에서 net start mysql을 치니
ㅋㅋ ㅋㅋㅋ ㅋㅋㅋㅋ ㅋㅋㅋㅋㅋ
이미 옛날에 실행했던 mysql이 혹은 그 이전 프로세스에서 실행된 mysql이 실행 중인데 서비스와 잘못 맞물린 거 같다.
프로세스를 종료하고 새로 실행하면 잘 될 것이다.
어쨌든 결과만 좋으면 됐다. (더 이상 묻지 마십시오 아픈 기억이니까...ㅠ)
3번 해결 과정이 무조건 정답이 아니니 다른 모든 해결방법을 총동원해보시는 걸 추천한다.
📖 7. MySQL 비밀번호 설정
mysql에 들어가서 비밀번호를 재설정해야 한다. 정석대로라면 아래와 같은 코드를 입력했을 때 Enter password:라는 곳에 아까 5번 과정에서 얻은 임시 비밀번호를 입력하고 들어가지만
나는 오류 해결 과정에서 시스템 파일을 insecure모드로 받아서 비밀번호가 없다. 그냥 엔터 치면 들어가는 거 같다.
mysql -uroot -p
그 후 mysql 콘솔에 다음 명령어를 입력해준다.
ALTER USER 'root'@'localhost' IDENTIFIED BY '원하는 비밀번호';
📖 8. MySQL 사용해보기
자 이제 본격적으로 MySQL을 탐색해보자.
show databases; // 현재 생성되어 있는 데이터 베이스를 보여줘라
create database test; // test 라는 이름의 데이터베이스를 만들어라
📖 9. PHP에서 MySQL 확장 연동하기
이제 우리가 설치한 php 인터프리터에서 mysql을 인식하고 서로 연동할 수 있도록 설정 파일을 수정해야 한다.
1) C:\APM\php\php.ini 에서 Dynamic extension 태그 항목 찾기
2) ;extension = mysqli와 ;extension = pdo_mysql을 찾고 각각 주석(;) 해제하기. (세미콜론만 제거해주면 됨)
3) 이후 Apache 서버 재실행 = httpd -k restart
📖 10. Apache 전체 서버에서 MySQL 연동 확인해보기
이제 모두 설치하고 연동했으니 서버엔진, 백엔드, DBMS 모두 서로 잘 연결되어 있는지 '눈으로' 확인해보자
C:\APM\Apache24/htdocs에 mysqltest.php라는 이름으로 php 파일을 만들어준다.
(php 파일을 만드는 방법은 메모장을 활용하여 전체 파일로 지정하고 확장자 명을. php라고 해주어도 된다.)
그리고 아래와 같은 코드를 입력해준 다음 저장한다.
<?php
// Mysql connection test 라는 글을 출력
echo "Mysql connection test<br />";
// db연결 확인, <password>부분에 본인이 설정한 비밀번호로 수정해준다
$db = mysqli_connect("localhost", "root", "<password>", "test");
// db연결 확인 시 success가 출력 아니면 failed가 출력
if($db) {
echo "connect success<br />";
} else {
echo "connect failed<br />";
}
// db연결 시 mysql에 버전정보를 가져오는 쿼리를 통해 버전 정보를 $result변수에 담는다
$result = mysqli_query($db, 'SELECT VERSION() as VERSION');
// 잘은 모르겠지만... result 변수의 값을 토대로 정리해서 버전 정보를 최종 출력해주는 듯 하다.
$data = mysqli_fetch_assoc($result);
echo $data['VERSION'];
?>
나는 php 문법은 모르지만... 한번 나름 해석해보았다. 대체로 맞겠지만 틀리면 언제든지 혼내주십시오.. 형님들...ㅠ
여기서 볼 수 있듯이 php에서 mysql콘솔에 쿼리를 날려주면 db, 즉 mysql에서 해당하는 정보를 전달해주고 php는 해당 정보를 웹페이지로 옮겨 출력하도록 한다. 해당 과정에서 간략하게나마 서버의 전체적인 움직임을 볼 수 있다.
✔마치며..
누군가는 하루 만에 할 과정들을 며칠을 걸려 블로그에 담고, 혼자 되뇌다가 오류에 부딪혀 싸우고 결국 포스팅의 첫 시리즈를 마쳤다. 비록 윈도우에서는 서버를 다룰 일이 없지만, 서버를 한번 간략하게나마 배운 입장에서 다시 포스팅을 하며 개념을 정리하고 한번 더 확고히 다지는 경험이 되었다. 다음은 AWS에서 클라우드 컴퓨터를 대여하여 우분투를 설치하고 리눅스 기반 서버 구축을 포스팅하려 한다.