case Computer :

[MYSQL] Access denied for user 'root'@'localhost'

거곰 2014. 3. 25. 13:55


MySQL 을 처음 설치 했을 때 mysql 접속 하려 할때 아래와 같은 에러가 발생 하는 경우가 생긴다.


MySql: Access denied for user 'root'@'localhost' 


에러 메시지는 아래와 같이 출력이 되는데 이때 root권한을 변경하고 싶어도 로그인이 안되어 변경이 불가능하다.


ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

or

ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)


 


* Mysql 패스워드 초기화 방법

- 로그인시 권한 정보를 확인하는 테이블을 일시적으로 skip 하여  로그인할수 있게 한후에
디비정보 변경을 하고 다시 서비스를 재시작하는 방법을 사용한다.

순서는 다음과 같다.


1. mysql 서비스 종료

$sudo /etc/init.d/mysql stop


2. mysql 데몬 직접 실행( --skip-grant-table 옵션)

 - 권한 정보 skip (설정후 보안을 위해 반드시 재시작 해야한다)

$sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &


3. mysql 접속 및 패드워드 초기화


$mysql -u root mysql
$mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';
$mysql> FLUSH PRIVILEGES;


4. mysql 서비스 재시작

$sudo /etc/init.d/mysql stop $sudo /etc/init.d/mysql start


서비스는 반드시 재시작 하기를 권장한다.

mysql 서비스가 --skip-grant-tables 옵션으로 실행되고 있다면 누구든지 권한없이 접속이 가능하기 때문이다.


수정 14.03.25-------------------------------------------------

수정후 mysql이 접속이 안된다면 프로세스 리스트(ps -ef)에 mysqld --skip-grant-tables 로 실행 된 항목이 있는지 확인해 보시기 바랍니다.

혹시나 해당 프로세스가 동작하고 있다면 종류후 다시 mysql 를 실행해주시면 됩니다.




반응형