도서 파일을 관리할 디렉터리를 생성합니다.
그 후 위키 북스 레포지터리를 클론해줍니다.
디렉터리위치> git clone https://github.com/wikibook/realmysql80
잘 다운로드 된 걸 확인할 수 있습니다.
mysql -u아이디 -p비밀번호
위 명령어를 통하여 mysql을 실행합니다.
CREATE DATABASE employees DEFAULT CHARACTER SET utf8mb4 COLLATE utf9mb4_0900_ai_ci;
use employees;
source employees.sql
MySQL 8.0이 릴리즈 되고난 이후 기본 캐릭터 셋이 latin-1에서 utf8mb4로 변경되었습니다.
source 명령어를 통하여 외부 SQL script file을 실행할 수 있습니다.
mysql -uroot -p --host=localhost --socket=/tmp/mysql.sock
mysql -uroot -p --host=localhost --port=3306
mysql -uroot -p
MySQL 서버에 접속할 때는 호스트를 localhost로 명시하는 것과 127.0.0.1로 명시하는 것의 의미가 다르다.
--host=localhost
옵션을 사용하면 항상 소켓 파일을 통해 접속하게 된다.
이는Unix domain socket
을 이용하는 방식으로, TCP/IP를 통한 통신이 아닌 유닉스의 프로세스간 통신(IPC; Inter Process
Communication)을 이용한다.하지만
127.0.0.1
을 사용하는 경우에는 자기 서버를 가리키는 루프백(loopback) IP 이기는 하지만 TCP/IP 통신 방법을 이용한다.
CREATE
USER 'user'@'%'
IDENTIFIED WITH 'mysql_native_password' BY 'password'
REQUIRE NONE
PASSWORD EXPIRE INTERVAL 30 DAY
ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEFAULT;
MySQL 서버의 Caching SHA-2 Pluggable Authentication은 SCRAM(Salted Challenge Response Authentication Mechanism)을 기반으로 한다.
SELECT * FROM mysql.password_history;
를 통하여 확인 할 수 있다.최범균님의 TDD로 암호 검사기를 만드는 영상도 맛이 좋다. - 언어 Java
권한을 묶어서 역할을 사용할 수 있게 됐다.
CREATE ROLE
role_emp_read,
role_emp_write;
GRANT SELECT ON employees.* TO role_emp_read;
GRANT INSERT, UPDATE, DELETE ON employees.* TO role_emp_write;
위와 같이 역할을 생성할 수 있다.
CREATE USER 'reader'@'127.0.0.1' IDENTIFIED BY 'password';
CREATE USER 'writer'@'127.0.0.1' IDENTIFIED BY 'password';
GRANT role_emp_read TO 'reader'@'127.0.0.1';
GRANT role_emp_write TO 'writer'@'127.0.0.1';
위와 같이 계정을 생성하고 역할을 부여하면 된다.
서버의 역할은 사용자 계정과 거의 같은 모습을 하고 있다.