반응형
Linux & Un*x
--init-file 옵션 사용
- mysqld 를 구동할 수 있는 계정(ex: mysql or root) 으로 login 한다.
- MySQL 서버를 중지한다.
Linux
service mysql stop
- Unix
- mysqld 종료 스크립트가 있다면 실행해서 종료한다.
없으면 mysql의 pid 파일을 찾은후에 kill (kill -9 로 종료하면 안 됨!. - 참고 자료) 종료한다. (kill 뒤에 옵션을 안 주면 TERMinate signal 이 전송된다)
kill `cat /var/lib/mysql/host_name.pid`
에디터에서 루트 암호를 초기화하는 SQL 파일을 만들고 /var/lib/mysql/mysql-pwd-init.sql 으로 저장한다.
MySQL 5.7 이상UPDATE
mysql.
user
set
authentication_string=
PASSWORD
(
"MyNewPass"
),
password_expired=
'N'
,
plugin=
'mysql_native_password'
where
User
=
'root'
;
flush
privileges
;
5.7 부터는 auth plugin 이 도입되어 auth_socket 일 경우 암호를 설정해서 로그인에 실패함
MySQL 5.7 미만UPDATE
mysql.
user
SET
Password
=
PASSWORD
(
'MyNewPass'
)
WHERE
User
=
'root'
;
FLUSH
PRIVILEGES
;
mysqld 를 --init-file 옵션과 함께 구동한다.
a. Linux
mysqld_safe --init-
file
=
/var/lib/mysql/mysql-pwd-init
.sql
b. Unix
mysqld_safe --init-
file
=
/var/lib/mysql/mysql-pwd-init
.sql &
- 잘 반영되었는지 확인하기 위해 mysql cient 로 login 해 보고 제대로 로그인 되면 /var/lib/mysql/mysql-pwd-init.sql 는 삭제한다.
mysql 서비스를 재구동한다.
service mysqld restart
--skip-grant-tables 사용
privilege 를 확인하지 않는 옵션인 --skip-grant-tables 옵션을 통해 mytsql 구동한후 암호를 변경한다.
- mysql 구동
Linux
service mysql start --skip-grant-tables
Unix
mysqld_safe --skip-grant-tables
- mysql 콘솔로 연결한다.
mysql -u root mysql
"--init-file 옵션 사용" 항목의 3번 루트 암호를 초기화하는 SQL을 수행한다.
mysql 재구동
service mysql restart
Windows
- 시작 -> cmd 에서 services.msc 입력하거나 제어판 -> 관리도구 -> 서비스
- MySQL server 중지
에디터에 Case1항의 3번 암호를 초기화하는 SQL 을 입력하고 c:\init.sql 로 저장
시작 -> 실행에서 다음 명령어 입력 (MySQL 설치경로 따라 다를수 있음)
"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
--defaults-file=
"C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
--init-file=c:\\init.sql
- 잘 반영되었는지 확인하기 위해 mysql cient 로 login 해 보고 제대로 로그인 되면 c:\init.sql는 삭제한다.
Ref
- http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html
- http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
- http://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/
반응형