• 전화하지 마셈
  • hyungseob@ssim.pe.kr
Codeigniter 3.x에서 4.x로 갈아 엎느라 기존 게시판 주소로 접근시 새 주소로 리다이렉션 된다.

Database [MySQL]

MySQL 5.7.9 설치시 참고해야할 사항

  • 빛그림
  • 677

1. MySQL 5.7 부터는 boost 1.5.9 이상이 필요하므로 cmake 옵션 뒤에 아래와 같이 옵션을 추가한다.
   -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost (소스컴파일의 경우)

2.  mysqli_connect(): Headers and client library minor version mismatch 라는 에러가 발생할 경우 터미널에서 php -i | grep 'Client API' 라고 명령을 내려서 Client API 버젼을 확인해보고 맞지 않을 경우 PHP를 다시 컴파일 해주면 된다.(소스컴파일의 경우)

3. MySQL 5.7x중에서도 5.7.9부터는 mysql.user 테이블의 password 필드명이 authentication_string으로 변경됐다. 또 password_expired, password_last_changed, password_lifetime, account_locked 필드가 추가되어 패스워드 기간 등에 대한 제어가 가능하다.

4. MySQL의 Password 함수를 이용하시는 경우 validate_password 옵션 부분을 세심히 봐줘야 한다.
   아래 명령으로 관련된 설정값을 볼수 있다.

   mysql> SHOW VARIABLES LIKE 'validate_password%';
   +--------------------------------------+--------+
   | Variable_name                        | Value  |
   +--------------------------------------+--------+
   | validate_password_dictionary_file    |        |
   | validate_password_length             | 8      |
   | validate_password_mixed_case_count   | 1      |
   | validate_password_number_count       | 1      |
   | validate_password_policy             | MEDIUM |
   | validate_password_special_char_count | 1      |
   +--------------------------------------+--------+

위와 같은 기본 설정값을 그대로 사용할 경우 where password=password('test'); 와 같은 쿼리를 사용할 경우 입력받는 4자 이므로 password() 함수를 실행하지 않고, Your password does not satisfy the current policy requirements 라는 에러를 발생한다.
그리고 mysql에서 직접 쿼리를 실행하면 아래처럼 나올 것이다.
mysql> SELECT * FROM sc_board_free WHERE no=1 AND password=PASSWORD('test');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

즉, MySQL의 기본설정된 규칙에 해당되지 않는 비밀번호는 쿼리 자체가 실행되지 않아 비밀번호가 맞음에도 불구하고 로그인 되지 않거나, 오류를 출력하게 될 것이다.   

기존의 데이터베이스를 그대로 유지 운영해야 하는 경우 my.cnf 화일에 validate-password=off 라고 기입해주고 MySQL을 재시작 해주는 것으로 해결 할 수 있습니다. XE, 그누보드 등의 범용 오픈소스 게시판을 이용하는 경우에도 이에 해당한다.


새댓글 등록