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

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

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

5.1. 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'@'%' = '신규비밀번호';

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

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

# mysql -u root -p
mysql> use mysql;
mysql> create user '만들고싶은ID'@'%' identified by '비밀번호';
mysql> select host, user from user;
mysql> SET PASSWORD FOR '만들고싶은ID'@'%' = '신규비밀번호';
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
에러가 나와야 함

5.2. mysql 접속 허용 관련 설정

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

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

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

옵션 상세
(1) ALL – 모든 권한 / SELECT, UPDATE – 조회, 수정 권한등으로 권한 제한 가능
    예) GRANT INSERT,UPDATE,SELECT ON *.* TO 'username'@'localhost';
(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 명령을 사용했을 경우에는 해당 명령 생략 가능 (하지만 확실하게 하기 위해 일반적으로 사용)