ERROR 1698 (28000): Access denied for user 'root'@'localhost' 문제 해결
Ubuntu18.04 APM 설치하기 (Apache+PHP,MariaDB) 편 보기
Ubuntu18.04 APM 설치하기 (Apache+PHP,MariaDB)
이번에 가비아 클라우드 서버에 APM 을 세팅할 일이 생겼다. 그동안 블로그에 기록을 해둔다는걸 또 세팅하기 귀찮았었는데 마침 기회가 왔다. 가비아 클라우드 서버에 연결은 기본 root 계정이 활성화 되어있다...
brtech.tistory.com
Ubuntu 18.04 에 MariaDB10 최신 버전을 설치하고 mysql_secure_installation 을 통해 패스워드를 설정하면
쉘에서 root 계정일때에는 password 입력 여부 상관없이 바로 로그인이 되어 확인이 안되지만,
다른 계정 혹은 ssh tunnel 을 통한 원격 mysql 접속을 하려할때 다음과 같은 에러를 내면서 접속이 되질 않는다.
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
패스워드를 재설정 하는것은 아무런 의미가 없다.
이미 mysql -uroot -pasdasdsad 이렇게만 입력해도 로그인이 되는것 자체가 문제인것이다.
mysql 에 일단 로그인을 해서
select * from mysql.user; 을 입력해보면
plugin 부분에 unix_socket 이라고 적혀있는데 이게 문제가 되는것이다.
사용자가 unix_socket 을 사용하는지만 체크하기때문에 비밀번호는 아무런 의미가 없게 되는것.
따라서, 해결책은 두가지 방법이 있다.
1. root user 를 새로 만드는 방법. ( 성공 )
2. plugin 을 변경하는 방법 ( 성공 - 가장 간단함 )
먼저 1번 방법.
mysql console 에서
MariaDB [(none)]> delete from mysql.user where User = 'root';
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> create user 'root'@'localhost' identified by 'test';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on *.* to 'root'@'localhost' with grant option;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
그리고 다시 select * from mysql.user; 로 확인해보면
plugin 에 unix_socket 이 사라짐을 확인 할수 있다.
그리고 원격과 타 계정에서 접속이 잘 되며 root 계정으로도 패스워드를 정확히 입력해야 콘솔 접속이 됨을 확인 할 수 있다.
2번 방법은 .
마찬가지로 mysql console 에서
MariaDB [(none)]> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
변경하면 위와같이 plugin 이 바뀌어있음을 확인 할 수 있다.
마찬가지로 원격, 타 계정 로그인 루트계정에서 패스워드 입력 여부등 모두 정상적으로 접속 된다.
update user set plugin='' WHERE user = 'root';
plugin 을 원치 않을 경우 위와같이 간단히 플러그인만 지워줘도 된다.
이상.