MySQL 8 은 utf8mb 가 기본 character set 이고 collation 으로는 utf8mb4_0900_ai_ci 를 사용하고 있으니 생략해도 됩니다. 


MySQL Create Database & user account


MySQL 데이타베이스와 계정 생성하기.

utf8

 mysql 5.7 이상은 Create User 구문 사용

MySQL 5.7 이상

CREATE DATABASE homestead CHARACTER SET utf8 COLLATE utf8_bin;
 
CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret' PASSWORD EXPIRE NEVER;
GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost';

flush privileges;
SQL

MySQL 5.7 미만

CREATE DATABASE homestead CHARACTER SET utf8 COLLATE utf8_bin;
 
GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost' IDENTIFIED BY 'secret';

flush privileges;
SQL

utf8mb4

위 구문에 CHARATER SET 과 COLLATE 추가

CREATE DATABASE homestead CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret' PASSWORD EXPIRE NEVER; 
GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost';
flush privileges;
SQL


MySQL 8 에 추가된 utf8mb4_0900_ai_ci collation 사용(생략 가능)

utf8mb4 & utf8mb4_0900_ai_ci

CREATE DATABASE homestead CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ;

CREATE USER 'homestead'@'localhost' IDENTIFIED BY 'secret' PASSWORD EXPIRE NEVER; 
GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost';
flush privileges;
SQL


ERROR 1044 (42000): 처리

ERROR 1044 (42000): Access denied for 'root' With All Privileges
CODE

원격지에서 접속시 grant Privileges  를 막아 놓아서 발생하며 다음 쿼리로 어느 서버에서 접속해야 권한이 허용되는지 확인후 해당 서버에서 로그인(원격지 호스트를 지정하는 -h 옵션 빼고 연결)

SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
CODE


MySQL 암호 변경

SET PASSWORD 사용

SET PASSWORD [FOR user] = password_option

password_option: {
    'auth_string'
  | PASSWORD('auth_string')
}
CODE
SET PASSWORD FOR 'homestead'@'localhost' = 'secret';
CODE


Alter user 사용 

alter USER 'homestead'@'localhost' IDENTIFIED BY 'secret' PASSWORD EXPIRE NEVER;
CODE

설치후 최초 root 암호를 변경할 경우 아래 구문 사용

ALTER USER 'root'@'localhost'  IDENTIFIED BY 'secret123';
CODE


MySQL password policy 변경

다음과 같이 암호 규칙에 맞지 않는다는 에러가 나며 암호 변경이 되지 않을 경우 해결책

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements


validate password plugin 삭제

권장하지 않음


mysql root 로 로그인한 후에 다음 명령어 실행후 mysql 재구동

uninstall plugin validate_password;
CODE


 암호 규칙을 낮게 설정

my.cnf에 다음과 같이 설정하고 mysql 재구동

[mysqld]
validate_password_policy=LOW
default_password_lifetime=0
CODE


기본 설정은 1(MEDIUM) 이며 각각의 의미는 아래와 같음


PolicyTests Performed
0 or LOWLength
1 or MEDIUMLength; numeric, lowercase/uppercase, and special characters
2 or STRONGLength; numeric, lowercase/uppercase, and special characters; dictionary file