나의 기억저장소
MySQL 8.0.20 설치 본문
정말 오랜만에 개발 연습을 하려고 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 를 붙이도록 한다. (띄어쓰기 없는 게 맞다)
이미 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; (테이블 조회)
■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로 삭제하게되면 메모리에 권한정보가 그대로 남아버려서 저장이 필요하다고한다...
*계정관리문이란 아래와 같다.
즉, 나는 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으로 되어있다.
아마 업데이트가 되었지 싶다...
따로 확인해보진 않겠다..깨지면 바꾸면되는것!
끝!!!
설치로 모두가 고통받지 않는 날이 오길 ㅠㅠ