(MYSQL) DCL(Data Control Language) 실습 - 유저 생성, 변경, 권한
1. CLI를 이용하여 DB에 접속하기
# 비밀번호 입력후 접속
$ mysql -u root -p
# 비밀번호 함께 입력후 접속
$ mysql -u root -p{password}
2. mysql 사용자 확인, 추가
mysql -u root -p
password: {등록한 pwd}
3. mysql에 접속후 바로 db까지 생성하기
$ mysql -u root -p{password} < {db이름}.sql
4. root 사용자 pwd 지정
맨 처음 mysql을 설치했을 경우에는 먼저 사용자와 pwd를 등록해야 한다. root를 사용하고 싶을땐 ALTER로 PWD를 지정해주면 된다
$ sudo mysql
mysql > ALTER user 'root'@localhost IDENTIFIED WITH mysql_native_password BY '비밀번호 입력';
5. 로컬에서만 접속 가능한 user 생성
다른 외부 컴퓨터에서는 mysql에 접속하지 못하고 자신의 컴퓨터에서만 접속할 수 있게 user를 생성하고 싶다면 localhost를 입력하면 된다
CREATE user 'userid'@localhost IDENTIFIED BY '비밀번호';
6. 모든 호스트에서 접속 가능한 user 생성
외부 컴퓨터에서도 mysql에 접속할 수 있게 user를 생성하고 싶다면 %를 입력하면 된다
CREATE user 'userid'@'%' IDENTIFIED BY '비밀번호';
7. 사용자 패스워드 변경
root’@’%’와 ‘root’@localhost 중 처음에 user를 생성했을때 입력했던 값을 써야한다. root’@’%’ 까지가 하나의 아이디라고 생각하면 편하다
SET PASSWORD FOR 'userid'@'%' = '새 패스워드';
8. 사용자 삭제
mysql > use mysql;
mysql > drop user 'userid'@'%';
9. mysql 현재 부여된 권한 확인
mysql > SHOW GRANTS for id;
ex)
SHOW GRANTS for 'root'@localhostlocalhost
10. 로컬에서만 접속 허용
mysql > GRANT ALL ON DATABASE.TABLE to 'root'@localhost;
ex)
GRANT ALL ON DATABASE.product to 'root'@loaclhost; # 사용자 root에게 product table의 모든 변경 권한을 주었다. 즉 외부에서도 product crud 가능
11. 특정 권한만 사용
mysql > GRANT SELECT, UPDATE ON DATABASE.TABLE to 'root'@localhost;
ex)
GRANT SELECT, UPDATE ON Market.product to 'root'@localhost; # 사용자 root에게 product table의 읽기,수정의 권한만을 주었다. 즉 삭제와 같은 처리는 할 수 없다
12. 모든 데이터베이스 권한 설정
GRANT ALL ON *.* to 'root'@localhost; # 사용자 root는 모든 데이터베이스의 crud가 가능하다
13. 특정 데이터베이스 내에 있는 모든 테이블에 권한 설정
GRANT ALL ON DATABASE.* to 'root'@localhost;
ex)
GRANT ALL ON Market.* to 'root'@localhost; # 사용자 root는 데이터베이스 Market내에 있는 모든 테이블의 crud가 가능하다