MySQL

mysql 5.7 설치방법

크로w 2017. 1. 27. 09:37

어디서 봤던 글을 토대로 따라하면서 잘 안되던 부분을 수정하여 작성하였습니다.


*참고

mysql을 정상 설치한 후 폴더 위치만 변경할 경우

(my.ini파일의 경로를 변경하고, bin폴더 아래 있는 mysqld를 install로 서비스 등록 해줘야함)



1.

http://dev.mysql.com/downloads/mysql/

에서 mysql-5.7.10-winx64을 다운

(Windows 10 64 bit을 사용할 경우)




2.

다운 후 원하는 경로에 압축풀기.

전 d:\mysql에 풀었습니다.

폴더 안에 my-default.ini 를 열고 수정합니다.

아래처럼 수정하시고 my.ini로 같은 폴더에 "다른이름으로 저장" 해주세요.

 1) basedir, datadir, port 앞에 주석(#)을 삭제한다.

 2) basedir에는 mysql 압축을 푼 폴더를 작성. (폴더경로는 백슬래시(\)가 아닌 슬래시로(/)

 3) datadir은 mysql압축을 푼 폴더 안에 data폴더

 4) port를 3306

 5) 수정 후, 다른 이름으로 저장 .. 이름을 my.ini로 같은 폴더에 저장합니다.

=>결과



3.

제어판에 환경변수에서 mysql 환경 변수를 등록해줍시다. 윈도우 키 누르시고 환경변수 검색하시면 바로 찾으실 수 있습니다.

전 설치한 경로가 d:\mysql이므로 MYSQL_HOME을 그곳으로 등록하였습니다.




이후, Path에 MYSQL_HOME\bin 폴더를 추가해줍니다.

%MYSQL_HOME%\bin 으로 적어야 합니다. MYSQL_HOME 양 옆에 %를 붙여주세요.

bin 전에는 \넣어주세요.





4.##### mysql/data폴더에 있는 내용을 모두 삭제후 initialize 실행해야 제대로 됨

 관리자 권한으로 명령 프롬프트를 실행합니다.

윈도우 키 누르시고 명령 프롬프트 검색 후 오른쪽 클릭, 관리자 권한으로 실행 혹은

윈도우 + x 키를 누르고 명령 프롬프트(관리자)를 찾으실 수 있습니다.


실행하시고 mysqld --initialize 를 입력


끝나고 명령 프롬프트엔 아무것도 안 나옵니다.

d:\mysql\data 폴더에(my.ini에 datadir로 입력하신 폴더) 데이터가 들어가는 것을 보실 수 있습니다.

(도중 문제가 생기셨다면, data 폴더 안에 내용을 비우고 다시 mysql --initialize 합니다.)


5.

 mysql을 서비스에 등록

"mysql 경로\bin\mysqld" --install

"d:\mysql\bin\mysqld" --install

(혹시나 안되시면, mysqld.exe로

"d:\mysql\bin\mysqld.exe" --install)

=>path를 등록하였기 때문에 mysqld --install해도 서비스는 등록되지만, 실행하시면 에러가 발생합니다.

서비스 경로가 c드라이브의 mysql이 설치되는 기본 폴더로 지정되있게 되고, 이를 찾지 못해서 에러가 발생합니다.

=>삭제는 --remove입니다.


등록에 성공하였으면, 서비스를 시작해봅시다.

서비스 시작은 꼭 명령 프롬프트가 관리자 권한으로 실행되어야 합니다.

net start mysql

=> 서비스 중지는 net stop mysql

혹시나 net start mysql 했을시
MySQL 서비스를 시작합니다..
MySQL 서비스를 시작할 수 없습니다.

서비스가 오류를 보고하지 않았습니다.

NET HELPMSG 3534을(를) 입력하면 도움말을 더 볼 수 있습니다.
라는 오류가 나올 경우에는

data폴더를 다 지우고 다시

mysqld --initialize--insecure

로 초기화하여 사용하면해결이 될겁니다.

(명령어가 mysqld --initialize--insecure 인지 mysqld --initialize-insecure인지 확실히 기억이 안나므로 되는 것으로 하면됩니다.)

6.
 
서비스가 잘 시작되면, 루트 계정으로 접속해봅니다.

mysql -u root -p

그럼 아마도 에러가 날 것입니다..
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: no)

비밀번호 문제로 접속이 안되므로 비밀번호 재설정해야하는데
   옛날버전 sql방식(update user set password = password('새로운 비밀번호') where user = 'root';)으로 비밀번호 재설정을 하다보면
   error 1054 (42s22) unknown column 'password' in 'field list'라는 에러 메시지가 나옴



일반적인 방법으로는 변경이 안되므로 우선 서비스를 종료합니다.

 1)

 관리자 권한 명령 프롬프트로, 서비스를 멈춥시다.

 net stop mysql

 2)

 비밀번호를 생략하도록 서비스를 다시 시작합시다.

 mysqld --skip-grant-tables & <-- 비밀번호 무시하고 구동

 입력하면 커서가 사라지는데 이상태로 놔둔 후 다른 cmd창을 실행.

 3)

 다른 명령 프롬프트를 열고, mysql에 접속합니다.

 (새로 연 명령 프롬프트)

 mysql -u root -p

 비밀번호 입력하는데 엔터 눌러도 접속됩니다.

 4)

 use mysql; <--- 사용할 데이터베이스 선택

 show tables; <--- 테이블 확인(패스워드관련된 정보가 보이지 않음)

 describe user; <--- user 데이터베이스의 자세한 정보 확인(패스워드 관련정보가 authentication_string에 담겨있음

 update user set authentication_string = password('새로운 비밀번호') where user = 'root';

 flush privileges;


 5)

 비밀번호를 생략했던 서버를 종료시키고, 새로운 비밀번호로 접속해봅시다.

 mysqld --skip-grant-tables 를 실행했던 명령 프롬프트를 종료합시다.

 윈도우키 + x 를 눌러 작업관리자(T)를 실행시키고, 백그라운드 프로세스에 있는 mysqld.exe를 종료시킵니다.


 6)

 명령 프롬프트를 관리자 권한으로 실행시키고, mysql 서비스를 시작합니다.

 net start mysql


 7)

 mysql -u root -p

 를 입력하고,

 새로운 비밀번호를 입력하면 접속할 수 있습니다.

 다만 사용하려면 root 비밀번호를 다시 설정하라는 알림이 뜹니다.

 alter user 'root'@'localhost' identified by '새로운 비밀번호';

 를 다시 입력해주셔야 정상적으로 사용 가능합니다.

 참고 https://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html