My Knowledge

MySQL Error : Client does not support authentication protocol 본문

Linux

MySQL Error : Client does not support authentication protocol

행복한하루 2008. 2. 19. 01:09
전에 제가 작성한 글 중에 "제로보드 사용 MySQL 버젼 5로 업그레이드 하기"라는 글이 있습니다.

이 글은 제로보드 사용중에 MySQL를 업그레이드 하게 되면 MySQL버젼이 바뀌면서 Client가 연결이 안되는 에러(Client does not support authentication protocol)가 발생하는데, 이를 해결하는 방법에 대하여 적은 글입니다.

이렇게 에러가 발생하는 이유는 MySQL 버젼이 업그레이드 되면서 password를 처리하는 방식이 달라져 발생하는 문제 입니다.

이번 글도 이와 비슷한 맥락입니다.

앞서 언급한 제로 보드 말고도 MySQL를 사용하는 서버용 Application은 많이 있습니다.

그래서 이번 글에서는 이러한 서버용 Application들에서 MySQL cli를 이용하여 저장되어 있는 password를 old version으로 수정하여 에러를 해결하는 방법에 대하여 설명하고자 합니다.

1. mysql database 접근

먼저 mysql에서 "show databases" 명령을 이용하시면 현재 존재하는 database들을 보여줍니다. 이중에 mysql로 database를 변경합니다. 변경 명령은 아래 예제와 같이 "use mysql"이라고 해주시면 됩니다.


 mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | bugs               |
 | client_test_db     |
 | dms                |
 | mantisdb           |
 | mysql              |
 | test               |
 | wikidb             |
 +--------------------+
 9 rows in set (0.00 sec)
 mysql> use mysql
 Database changed


2. 변경할 Table 확인하기

database가 변경된 다음에는 "show tables" 명령을 이용하여 어떠한 table들이 있는지 확인 하실 수 있습니다. 이 중에 저희가 수정해야 할 table은 user라는 table입니다.


 mysql> show tables;
 +---------------------------+
 | Tables_in_mysql           |
 +---------------------------+
 | columns_priv              |
 | db                        |
 | func                      |
 | help_category             |
 | help_keyword              |
 | help_relation             |
 | help_topic                |
 | host                      |
 | proc                      |
 | procs_priv                |
 | tables_priv               |
 | time_zone                 |
 | time_zone_leap_second     |
 | time_zone_name            |
 | time_zone_transition      |
 | time_zone_transition_type |
 | user                      |
 +---------------------------+
 17 rows in set (0.00 sec)


그리고 "describe user" 명령을 이용하면 user에 있는 filed들을 보실 수 있습니다. Filed들이 너무 많이 나와서 여기 예제에서는 삭제 했습니다. ^^

쭉 나오는 Field중에 저희가 이용할 Field는 HostUser입니다.

해당 내용을 보고 싶으시면 아래와 같이 "select User from user" 와 "select Host from user"명령을 이용해서 확인 하실 수 있습니다.


 mysql> select User from user;
 +----------+
 | User     |
 +----------+
 | root     |
 | bugs     |
 | dms      |
 | dmsadmin |
 | mantis   |
 | wikiuser |
 +----------+
 10 rows in set (0.00 sec)
 mysql> select Host from user;
 +-----------+
 | Host      |
 +-----------+
 | localhost |
 | localhost |
 | localhost |
 | localhost |
 | localhost |
 | localhost |
 +-----------+
 10 rows in set (0.01 sec)


3. password 변경하기

이제 old password가 필요한 user를 찾아 password를 변경하시면 됩니다.

 mysql> set password for 'dms'@'localhost' = OLD_PASSWORD('djw9281js');
 Query OK, 0 rows affected (0.00 sec)
 mysql> set password for 'dmsadmin'@'localhost' = OLD_PASSWORD('js9281djw');
 Query OK, 0 rows affected (0.00 sec)
 mysql>

참고로 말씀드리면 이번 예제는 KnowledgeTree라는 Document Management 시스템입니다.

KnowledgeTree에서는 dms 와 dmsadmin이라는 user를 사용하는데, 이 두 user의 password를 old version으로 바꾸어 접속이 될 수 있게끔 해주는 것입니다.

이렇게 password를 변경해 주면 Client does not support authentication protocol 에러를 해결 할 수 있습니다.

그리고 MySQL 공식 홈페이지에도 관련 내용이 있으니, 참고 하시기 바랍니다.
(http://dev.mysql.com/doc/refman/4.1/en/old-client.html)


'Linux' 카테고리의 다른 글

md5sum (파일 체크섬)  (0) 2008.03.25
VNC with SSH  (0) 2008.03.03
VNC 화면 공유하기  (0) 2007.12.22
리눅스에서 VNC 사용하기  (1) 2007.12.05
제로보드 사용 MySql 버젼 5로 업그레이드 하기  (1) 2007.07.25