보고 배운 사이트 : 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 계정에 대해 모든 권한 부여
대표적인 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';