2009년 10월 6일 화요일

MySQL 권한 5

Password Hashing

MySQL에서는 패스워드는 독자의 방법으로 암호화된다. (한방향)

MySQL 4.1에서 이 방식이 변경되었다.

mysql> select password('mycom');
+-------------------------------------------+
| password('mycom') |
+-------------------------------------------+
| *5BD79BBCCD59CEB5DC80FB46F393EC6FA414994D |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select old_password('mycom');
+-----------------------+
| old_password('mycom') |
+-----------------------+
| 0425a28758eb7712 |
+-----------------------+
1 row in set (0.00 sec)

4.1이상의 패스워드는 PASSWORD() 함수에서 4.0이하의 패스워드는 OLD_PASSWORD()함수로 확인할 수 있다.

또 4.1이상에서 4.0까지의 암호화를 사용하려면 다음과 같은 방법이 있다.

①mysqld --old-passwords
②SQL문에서는 OLD_PASSWORD()함수를 사용한다.

old-passwords옵션을 지정하면 4.1이상의 PASSWORD()함수는 OLD_PASSWORD()함수와 같은 동작을 한다.


4.0이하의 클라이언트에서 4.1이상의 서버에 접속하려고 하면 다음과 같은 에러가 나올 때가 있다.

"Client does not support authentication protocol requested by server; consider upgrading MySQL client"

이것에 대처하기 위해서는 mysql.user.Password컬럼의 값을(패스워드) OLD_PASSWORD()함수로 세팅한다.