Today
-
Yesterday
-
Total
-
  • MySQL8 계정 삭제 / 추가 / 권한부여 / 권한삭제 / 비밀번호 변경
    DB/MySQL 2023. 12. 2. 00:01

    계정 삭제

    보고 배운 사이트 : 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';

Designed by Tistory / Custom by 얼거스