Error Message
Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
MySQL을 업그레이드하거나 구버전의 DB Dump를 신버전의 MySQL 서버로 옮기면 발생하는 메시지.
MySQL의 password 함수 취약점이 개선되어, 암복호화 되는 값이 다르기 때문에 발생한다.
mysql> SELECT PASSWORD('1234'), OLD_PASSWORD('1234');
+-------------------------------------------+----------------------+
| PASSWORD('1234') | OLD_PASSWORD('1234') |
+-------------------------------------------+----------------------+
| *A4B6157319038724E3560894F7F932C8886EBFCF | 446a12100c856ce9 |
+-------------------------------------------+----------------------+
이 경우 어플리케이션 혹은 웹 페이지가 DB Connection이 되지 않는다.
해결 방법은 2가지이다.
첫번째 방법. update 쿼리 수행
mysql> USE mysql
mysql> UPDATE user SET password=password('1234') WHERE user='test';
mysql>
GRANT ALL PRIVILEGES ON testdb.* TO test@'localhost' IDENTIFIED BY '1234'; mysql> FLUSH PRIVILEGES;
GRANT도 다시 해 줘야 하는것 같다.
두번째 방법. MySQL 설정 변경
mysql> set old_passwords=1; -- 혹은 'ON'
mysql> show variables like '%pass%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| old_passwords | ON |
| report_password | |
+-----------------+-------+
my.cnf 파일을 편집할 때는 [mysqld] 부분에 old_passwords = 1 이라고 설정.
Note
MySQL의 DB Connection String 외에 특정 필드를 password 형태로 저장하였던 경우,
모두 update하거나 어플리케이션 혹은 웹 페이지 쪽에서 old_password로 변경해야 한다.
이 작업이 번거로울 경우 서버 설정을 바꾸는 것이 간단하다.
'서버&시스템 > MySQL' 카테고리의 다른 글
MySQL) Table Partitioning(파티셔닝) - 서버 세팅 (0) | 2015.08.25 |
---|---|
설치 시 지정했던 configure 옵션 확인 (0) | 2015.08.24 |
mysqldump 방법 및 옵션(전체, 구조만, 한글 깨짐 방지) (0) | 2014.09.19 |
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log (0) | 2014.04.24 |
MySQL Replication (마스터-슬레이브 동기화) 설정 (0) | 2014.04.08 |