Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

나의 기억저장소

MySQL 8.0.20 설치 본문

MySQL

MySQL 8.0.20 설치

개발미아 2020. 7. 5. 23:44

정말 오랜만에 개발 연습을 하려고 MySQL을 설치했다...

 

그런데 웬걸, 기본 설치 단계부터 심상치 않다.

 

중간중간에 보이는 [error]...내가 뭘 잘못했니?

 

그래서 기록해둔다.

 

고통받지 않는 완전 간단 핵심 설치 설명서!! ㅠㅠ

 

 

■1. MySQL 다운로드

https://dev.mysql.com/downloads/mysql/

위의 링크로 이동해서 본인이 원하는(혹은 해당하는) 버전을 다운로드.

*필자는 Windows10 64bit

오라클 계정이 필요하다.

 

2. 압축 풀기

폴더 구성은 아래와 같이 된다.

 

■3. 원하는 경로로 이동

*필자는 C:\ 로 이동했다.

 

■4. 환경변수 등록

[ 내 PC → 우클릭 속성(R) → 고급 시스템 설정 → 고급  환경변수(N) ]로 이동한다.

시스템 변수를 기준으로 mysqld.exe의 위치를 바라보게 하면 되는데..

보통 [ MySQL폴더\bin ]에 위치하게 된다.

 

방법 1.

사용자 변수에 추가 후, 시스템 변수에서 불러 쓴다.

1. 사용자 변수 - 새로만들기 - 변수명, 변수 값을 입력

2. 시스템 변수 - Path - 새로만들기 - %사용자변수명%\bin

방법 2.

시스템 변수에 그냥 추가한다.

1. 시스템 변수 - Path - 새로만들기 - MySQL폴더\bin

어느 방법을 쓰든 핵심은 mysqld.exe 가 있는 bin 폴더를 보게 하면 된다는 것이다.

*개인 PC에서 굳이 방법1을 쓸 이유는 없다고 본다...(설령 계정을 여러 개를 사용해도 설치 위치는 동일하지 않을까?..)

 

■5. 설정파일 초기화

이제 준비가 되었다.

명령 프롬프트를 열고 MySQL 설정파일을 초기화하자.

mysqld --initialize-insecure

커맨드 실행 후, mysql 폴더를 확인해보면 data폴더가 생겼을 것이다.

*기본 초기화 커맨드는 mysqld --initialize 이지만...root계정의 암호가 무작위로 생성된다..(확인이 어렵다 ㅠㅠ)

따라서 반드시 -insecure 를 붙이도록 한다. (띄어쓰기 없는 게 맞다)

실행후 data 폴더가 생긴 것을 확인!!!

이미 mysqld --initialize로 data폴더를 생성했다면 지우고 다시 해주면 된다.

 

■5-1. 에러가 발생하면서 data폴더를 찾을 수 없다면서 생성되지 않는 경우

[윈도우 - 서비스 - MySQL 속성 ]에서 실행파일(mysqld.exe)의 경로를 확인한 후, 잘못되었다면 레지스트리 편집기에서 위치를 바꿔준다.

*레지스트리 편집기에서 확인해도 좋다.

 

윈도우+R(실행) - regedit - 컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL 로 이동하여 ImagePath 를 선택하여 확인&수정

 

 

 

■6. MySQL 서비스 등록

mysqld --install

삭제 : mysqld --remove

 

■7. MySQL 서비스 시작

net start mysql
* 정지 : net stop mysql

 

8. MySQL 로그인확인

여기까지 왔으면 거의 다 끝났다!! 이제 로그인을 확인한다.

mysql -u root

버전과 함께 로그인성공!

 

9. 테이블 생성 확인

기본테이블을 확인한다.

use mysql; (mysql database에 접근)
show tables; (테이블 조회)

mysql database에 먼저 접근을 해주지않으면 에러가 발생한다!

 

■10. root 비밀번호 설정

* 5.7.xx 버전 이상부터는 ALTER로 변경해야 한다고 한다.(UPDATE가 아니다..!!!)

* 여기에 대해서는 정말 상세한 포스트가 많았기에 별도 기술하지 않는다.

 

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경할 비밀번호';

 

[예시]

ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

 

■그 외에...

1. 원래는 수정후 저장이 필요했던거 같은데...잘 되네? 이건 추가로 알아봐야겠다..

→ MySQL에서는 권한정보의 변경에 대해서 별도로 캐치하여 바로 업데이트가 이루어진다고한다...

이렇게만 말하면 애매하니까, 예를 들어 유저를 삭제했다고 하면...

 ・DROP USER로 유저를 삭제하는 경우 : FLUSH PRIVILEGES가 필요하지 않음

 ・DELETE로 삭제하는 경우 : FLUSH PRIVILEGES가 필요함 

DROP USER로 삭제하면 계정관리문이 되기 때문에 바로 캐치하여 저장된다고한다.

하지만 DELETE로 삭제하게되면 메모리에 권한정보가 그대로 남아버려서 저장이 필요하다고한다...

 

*계정관리문이란 아래와 같다.

[출처] https://dev.mysql.com/doc/refman/8.0/en/account-management-statements.html

즉, 나는 ALTER를 통해서 유저정보(암호)를 변경했기 때문에 저장이 필요하지 않았던 것이다...!

(하지만 이걸 하나하나 구분하느니...확실하게 저장해주는 것이 좋지 않을까싶다.)

 

참고문서

[일본어] https://zatoima.github.io/mysql-flush-privileges.html

[영어/MySQL공식문서] https://dev.mysql.com/doc/refman/8.0/en/account-management-statements.html

 

 

2. 이전 버전을 기준으로 한글이 깨지는 현상이 있었다고 하는데 8.0.20의 경우 기본이 utf-8으로 되어있다.

아마 업데이트가 되었지 싶다...

따로 확인해보진 않겠다..깨지면 바꾸면되는것!

 

 

끝!!!

 

설치로 모두가 고통받지 않는 날이 오길 ㅠㅠ