클라우드컴퓨팅

[AWS] mySQL 세팅

winwin-k9 2023. 1. 5. 03:22

이 글은 MySQL 8버전을 사용한다.

 

RPM으로 mySQL을 다운받으면 apt로 설치할때와 달리 초기 비밀번호가 자동으로 세팅된다.

 

초기 설정된 비밀번호를 확인해준다.

sudo cat /var/log/mysqld.log

 

mySQL을 실행시킨다.

mysql -uroot -p

Enter password: [위의 초기 패스워드 입력]

우선 초기 설정된 복잡한 비밀번호를 변경해야 하는데, 무엇을 입력해도 다음과 같은 오류가 발생한다.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

 

비밀번호를 변경하려고 해도 다음과같은 오류가 발생한다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

비밀번호 정책에 맞지 않기 때문이다.

 

다른 방법을 사용한다.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD("TOOR");
update user set password=PASSWORD("TOOR") where User='root';
update user set authentication_string =PASSWORD("TOOR") where User='root';

 

위 3가지 방법 모두 다음과 같은 오류가 발생하여 불가능 하였다.

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

우선 비밀번호 설정 강도를 확인한다.

SHOW VARIABLES LIKE 'validate_password%';

그래도 계속 비밀번호를 초기화 하라는 오류가 발생하여서 확인할 수 없었다.

You must reset your password using ALTER USER statement before executing this statement.

현재 설정된 비밀번호 정책조차 확인 할 수 없다.

따라서 우선 강도 높은 비밀번호를 강제로 설정 하도록 한다.

다음과 같은 조건을 만족하도록 설정한다.

 

  • length는 길이를 의미한다. 8자 이상이어야 한다.
  • mixed case count는 대소문자를 적어도 1회이상은 써야한다.
  • 밑의 number count도 숫자를 적어도 1회 이상은 써야한다.
  • 마지막의 special char count는 특수문자를 적어도 1회 이상은 써야한다.

 

mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
Query OK, 0 rows affected (0.00 sec)

우선 비밀번호 설정을 완료 했다.

비밀번호 정책을 확인한다.

 

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| 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      |
+--------------------------------------+--------+

비밀번호 강도가 현재 MEDIUM으로 설정되어 있다.

 

따라서 비밀번호 강도를 LOW로 변경시킨다.

강도 LOW는 비밀번호의 길이만 충족시키면 된다.

mysql> set global validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)

참고로 mySQL 버전에 따라 명령어가 다르다. 

 

mysql5

mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)

 

mysql8

mysql8에서는 "_policy"가 ".policy"로 변경되었다.

mysql> set global validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)

 

이제 원래 원하던 비밀번호로 다시 변경이 가능해졌다.

mysql> ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
Query OK, 0 rows affected (0.00 sec)
728x90