클라우드컴퓨팅
[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