6일차 수업내용 간단 요약
INSERT INTO Accounts(email, password, name) VALUES('test@test.com', 'test123', 'user1');
SELECT password, name FROM Accounts WHERE email = 'test@test.com';
UPDATE Accounts SET password = 'test456' WHERE email = 'test@test.com';
DELETE FROM Accounts WHERE email = 'test@test.com';
또는UPDATE Accounts SET active = 'NO' WHERE email = 'test@test.com';
7일 차 본문으로 들어가기에 앞서 오늘 배운 SQL 쿼리문 정리 ✍
CREATE VIEW [뷰이름] AS SELECT 속성1, 속성2, ...
FROM [테이블명] WHERE 조건;
DROP VIEW [뷰이름];
CREATE INDEX [인덱스명] ON [테이블명] (속성1, 속성2, ...);
SHOW INDEX FROM [테이블명];
ALTER TABLE [테이블명] DROP INDEX [인덱스명];
GRANT [권한] ON [DB이름.테이블명] TO [사용자];
REVOKE [권한] ON [DB이름.테이블명] FROM [사용자];
SHOW databases;
USE mysql;
-> SELECT user, host FROM user\G;
\G
: 한 행이 너무 길어서 글자를 보기 힘들때 사용하면 행별로 보기 좋게 출력됨DCL 명령어 실습하기
관리자(root) 계정으로 로그인하여 smart
라는 이름의 DB를 새로 생성한 뒤
member
라는 이름의 테이블( 속성 : idx
, email
, password
, name
)을 만들어 준다.
사용자 user1
과 user2
를 어떤 IP에서든지 접속 할 수 있도록 새로 생성해준다.
user1
사용자에게 SELECT 권한을 부여하고, SELECT 권한을 user2
에게 부여할 수 있도록 설정해준다. ( WITH GRANT OPTION
을 사용 )
user1
으로 접속한 뒤 member
테이블에 대한 SELECT 권한이 부여되었는지 확인하고,
user2
에게 마찬가지로 SELECT 권한을 부여해준다.
user2
로 다시 접속하여 SELECT 권한과 INSERT 권한을 확인한다.
위에서 보는바와 같이 부여한 SELECT 권한에 대해서는 정상적으로 동작하였고,
부여하지 않은 INSERT 권한은 거부된 것을 볼 수 있었다.
(SELECT 했을 때 출력된 결과물은 사전에 미리 입력해 둔 데이터이다.)
마지막으로 user1
에게 부여한 SELECT 권한을 회수해보겠다.
user1
으로 접속하여 SELECT 실시 한 결과 권한이 거부됬다는 것을 볼 수 있었지만, user2
에게 부여된 SELECT 권한은 ❗정상적으로 동작❗하는 것을 확인할 수 있었다.
예전에는 CASCADE
옵션을 사용하여 user2
의 권한도 같이 회수할 수 있는 기능이 있었으나, 현재 MySQL 8 버전에서는 지원이 되지 않는다고 한다.🤔
다음 글에서 이어서 계속 👉