데이터베이스 (MySQL) - SQL DCL(Data Control Language) 이해 및 실습

5. SQL DCL(Data Control Language) 이해 및 실습

mysql 사용자 확인, 추가, 비밀번호 변경, 삭제

1. mysql 사용자 확인
# mysql -u root -p
mysql> use mysql;
mysql> select * from user;

2. 사용자 추가
# mysql -u root -p
mysql> use mysql;

1) 로컬에서만 접속 가능한 userid 생성
mysql> create user 'userid'@localhost identified by '비밀번호';

2) 모든 호스트에서 접속 가능한 userid 생성
mysql> create user 'userid'@'%' identified by '비밀번호';

3. 사용자 비밀번호 변경
mysql> SET PASSWORD FOR 'userid'@'%'=PASSWORD('신규비밀번호');

4. 사용자 삭제
# mysql -u root -p
mysql> use mysql;
mysql> drop user 'userid'@'%';

실습3 - 사용자 확인, 추가, 비밀번호 변경, 삭제

# mysql -u root -p
mysql> use mysql;
mysql> create user '만들고싶은ID'@'%' identified by '비밀번호';
mysql> select host, user from user;
mysql> SET PASSWORD FOR '만들고싶은ID'@'%'=PASSWORD('신규비밀번호');
mysql> exit;

# mysql -u 만들고싶은ID -p
mysql> exit;


# mysql -u root -p
mysql> use mysql;
mysql> drop user '만들고싶은ID'@'%';
mysql> select host, user from user;
mysql> exit;

# mysql -u 만들고싶은ID -p
에러가 나와야 함

mysql 접속 허용 관련 설정

1) 로컬에서만 접속 허용
mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@localhost identified by "korea123";

2) 특정 호스트에만 접속 허용
mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@www.blim.co.kr identified by "korea123";

3) 모든 호스트에서 접속 허용
mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@'%' identified by "korea123";

옵션 상세
(1) ALL – 모든 권한 / SELECT, UPDATE – 조회, 수정 권한등으로 권한 제한 가능
    예) GRANT INSERT,UPDATE,SELECT ON *.* TO 'username'@'localhost' IDENTIFIED BY '비밀번호';
(2) DATABASE.TABLE – 특정 데이터베이스에 특정 테이블에만 권한을 줄 수 있음 / *.* – 모든 데이터베이스에 모든 테이블 권한을 가짐
(3) root – 계정명
(4) korea123 – 계정 비밀번호

참고: flush privileges 명령

  • flush privileges;
  • user, db 같은 grant table을 INSERT, UPDATE 등을 써서 직접 데이터 입력/수정을 할 경우, grant tables를 다시 읽어야 권한 설정이 적용됨.
  • 서버를 재기동하지 않고, grant table을 새로 읽으라는 명령이 flush privileges 이지만, INSERT, UPDATE 가 아닌 GRANT 명령을 사용했을 경우에는 해당 명령 생략 가능 (하지만 확실하게 하기 위해 일반적으로 사용)