MySQL 데이타베이스와 사용자 계정 생성하기
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) 이며 각각의 의미는 아래와 같음
Policy | Tests Performed |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |