MySQL8 계정 삭제 / 추가 / 권한부여 / 권한삭제 / 비밀번호 변경

김아무개·2023년 5월 20일
0

MySQL

목록 보기
10/11
post-thumbnail

계정 삭제

보고 배운 사이트 : infotake.tistory

  • 특정 IP 대역 기준 삭제
    drop mysql.user '계정명'@'192.168.%';

  • 모든 IP 대역 기준 삭제
    drop mysql.user '계정명'@'%';

실행 확인

drop user 'zhyun'@'%';

테스트 해보니 쿼리에서 host( 허용ip대역 )를 적어주지 않으면
자동으로 host를 전역 % 으로 인식해서 실행한다.

그렇기 때문에,
select 쿼리를 사용해서 host 정보 확인 후 drop문 작성을 해주어야 할 것 같다.


계정 추가

보고 배운 사이트 : infotake.tistory

  • 특정 IP 대역 기준 생성
    create user '계정명'@'192.168.%' identified by '패스워드';

  • 모든 IP 대역 기준 생성
    create user '계정명'@'%' identified by '패스워드';

실행 확인

create user 'zh'@'%' identified by 'rootrootgroot';


계정 권한 부여

GRANT [type of permission] ON [database name].[table name] TO '[username]'@'[hostname]';

사용 예시

GRANT ALL PRIVILEGES ON *.* TO 'aaa'@'localhost'; 

localhost 에서 접속하는 aaa 계정에 대해 모든 권한 부여

부여할 수 있는 타입 조사 [type of permission]

대표적인 8가지 권한 소개

  • SELECT
    사용자가 테이블의 데이터를 조회할 수 있는 권한을 제공
    SELECT 문을 사용하여 데이터를 읽을 수 있다.

  • INSERT
    사용자가 테이블에 새로운 행을 추가할 수 있는 권한을 제공
    INSERT 문을 사용하여 데이터를 추가할 수 있게 된다.

  • UPDATE
    사용자가 테이블의 기존 행을 수정할 수 있는 권한을 제공.
    UPDATE 문을 사용하여 데이터를 수정할 수 있게 된다.

  • DELETE
    사용자가 테이블의 행을 삭제할 수 있는 권한을 제공.
    DELETE 문을 사용하여 데이터를 삭제할 수 있게 된다.

  • CREATE
    사용자가 새로운 테이블 또는 데이터베이스를 생성할 수 있는 권한을 제공.

  • DROP
    사용자가 테이블 또는 데이터베이스를 삭제할 수 있는 권한을 제공.

  • GRANT OPTION
    사용자가 다른 사용자에게 권한을 부여하거나 취소할 수 있는 권한을 제공.

  • ALL PRIVILEGES
    사용자에게 모든 권한을 부여.
    이는 위의 모든 권한을 포함하며, 데이터베이스에서 가능한 모든 작업을 수행할 수 있게 한다.

실행 확인

GRANT ALL PRIVILEGES ON *.* TO 'zh'@'%';
flush privileges; // 사용자 계정 변경사항 즉각 반영

GRANT ALL PRIVILEGES ON *.* TO 'zhyun'@'%';
flush privileges;

위의 쿼리를 이어서 실행 시켰더니 에러가 났다.

ERROR 1410 (42000): You are not allowed to create a user with GRANT

구글링으로 아래와 같이 수정하여 쿼리를 실행했더니 성공!

GRANT ALL PRIVILEGES ON *.* TO 'zhyun'@'%' WITH GRANT OPTION;
flush privileges;

그리고 루트권한 과 같은 모든 권한을 갖는 계정은 root 하나로 족하다는 것을 배울 수 있었다.

그래서 이런식으로 여러 계정에 모든 권한 부여하는 것에 대해 검색해보면
많은 사람들이 이 행동을 제지시키는 것을 볼 수 있었다.

개인 내부 프로젝트시에는 상관이 없지만
실수라던지,
나도 모르는사이에 모든 권한을 가진 계정이 유출되면
내 DB가 남의 DB가 되어버리는 불쌍사나,
내 DB에 있던 정보들(개인정보 등 관리할 수 있는 모든 정보/데이터)을 유출 당할 수 있기 때문이다.


zh 계정 권한 확인 테스트!


계정 권한 삭제

REVOKE 권한_유형 ON 데이터베이스.* FROM '계정'@'호스트';

실행 확인

REVOKE ALL PRIVILEGES ON *.* FROM 'minicampus_user'@'%';


계정 비밀번호 변경

ALTER USER '유저명'@'허용ip대역' IDENTIFIED 
BY '변경할비밀번호';

실행 확인

ALTER USER 'zh'@'%' IDENTIFIED 
BY 'rootrootgroot';

profile
Hello velog! 

0개의 댓글