/ DATABASE

(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가 가능하다