본문 바로가기
3층 개발관/SQL

[SQL](MySQL,MariaDB) 유저 확인, 생성 및 권한부여, 삭제

by 개발관 2023. 1. 17.
반응형

1. SQL 유저 조회(확인)

제한된 데이터를 보여주기 위해 SQL유저를 생성하거나,

서버 관리를 하기 위해 SQL유저를 생성하는 경우가 있습니다. 그럼 유저를 생성하는 법을 알아보겠습니다.

 

-- Mysql접속 root권한으로 접속
mysql -u root -p

 

 

1. 저는 MariaDB를 쓰기 때문에 Mysql Client(MariaDB)를 사용하였습니다.

root 권한으로 Mysql 접속 / root권한 접속 시 root의 패스워드를 알고 있어야 합니다.

 

 

2. root권한 접속 후 아래의 코드블럭 내용을 입력!

-- mysql의 데이터베이스 선택
use mysql

위 사진과 같이 MariaDB[none]에서 -> MariaDB[mysql]로 변한 것을 확인하실 수 있습니다.

 

 

3. 위 사진과 같은 상태에서 아래 코드블럭과 같이 써줍니다.

-- user테이블의 host, user, password 조회!
select host, user, password from user;

이렇게 쓰시면 해당 사진과 같이 해당 데이터베이스에서 쓰는 호스트, 사용자 아이디, 패스워드를 확인하실 수 있습니다.

 


 

2. SQL 유저 생성 & 권한부여

 

1. SQL 유저생성 및 접근 권한 부여

-- 사용자 추가 / 접근권한이 default로 %로 잡혀 모든 원격주소에서 접근 가능 / 패스워드 제외
CRATE USER 사용자ID; 

-- 내부접근 사용자 추가 및 패스워드 설정
CREATE USER@localhost IDENTIFIED BY '비밀번호';

-- 외부접근 사용자 추가 및 패스워드 설정
CREATE USER@'%' IDENTIFIED BY '비밀번호';

-- 특정 ip접근만 허용 및 패스워드 설정
CREATE USER@'192.168.0.1' IDENTIFIED BY '비밀번호';

-- 특정 대역대만 허용 및 패스워드 설정
CREATE USER@'192.168.%' IDENTIFIED BY '비밀번호';

-- 변경사항 적용
FLUSH PRIVILEGES;

 

이렇게 사용자를 추가해주면 현재의 상태는 DB에 접근만 할 뿐 내가 원하는 데이터 베이스를 볼 수는 없다. 

데이터 베이스에 대한 접근 권한이 풀리지 않았기 때문!

그래서 데이터 베이스에 대한 접근권한을 풀어주는 것이 중요하다.

 

2. SQL 유저에 데이터베이스, 테이블에 대한 접근 권한 부여

-- 기본적인 형식 / 비밀번호는 안써두 됩니다. 혹시 기존계정에 비밀번호가 없으면 비밀번호 생성됨
GRANT ALL PRIVILEGES ON DB명.테이블명 TO 사용자아이디@HOST IDENTIFIED BY '비밀번호';

-- 모든 DATABASE 및 모든 TABLE에 대한 접근 허용
GRANT ALL PRIVILEGES ON *.* TO 사용자아이디@HOST;

-- 해당 데이터베이스의 모든TABLE에 대한 접근 허용
GRANT ALL PRIVILEGES ON DB명.* 사용자아이디@HOST;

-- 해당 데이터베이스의 특정 TABLE에 대한 접근만 허용
GRANT ALL PRIVILEGES ON DB명.테이블명 사용자아이디@HOST;

-- 해당 데이터베이스의 특정 TABLE에 대한 조회만 허용
GRANT SELECT ON DB명.테이블명 사용자아이디@HOST;

등등

--변경사항 적용
FLUSH PRIVILEGES;

 

변경된 권한을 확인(조회) 해보자!

SHOW GRANTS;

-- 해당 사용자의 권한이 조회됨 --
SHOW GRANTS FOR 사용자아이디@HOST

 


3. SQL 유저 삭제 및 권한 삭제

 

항상 삭제는 신중히 하자!!

1. 유저 삭제

-- 사용자 아이디 삭제 --
DROP USER '사용자아이디';

-- 다른 방법으로 삭제 --
DELETE FROM USER WHERE USER ='사용자아이디';

 

2. 권한삭제

사용자는 필요한데 권한을 삭제하고 싶은 경우

-- 기본형식 (사용자 삭제아닙니다) --
REVOKE ALL ON DB명.테이블명 FROM 사용자아이디;

-- 사용자의 모든권한 삭제 --
REVOKE ALL ON *.* FROM 사용자아이디;

 


 

꿀팁 방출!!

권한을 주면서 유저를 바로 생성하는 방법이 있다.

끝까지 본사람만이 알 수 있는 꿀팁!!

--사용자에게 모든 데이터베이스, 모든 테이블에 대한 권한을 주면서 유저가 생성됨--
GRANT ALL PRIVILEGES ON *.* 사용자아이디@'HOST' IDENTIFIED BY '비밀번호';

 

 


** 참고자료 **

 

 

https://computer-science-student.tistory.com/514

https://nickjoit.tistory.com/144

https://24hours-beginner.tistory.com/148

 

반응형

'3층 개발관 > SQL' 카테고리의 다른 글

[SQL] AUTOCOMMIT 이란??  (0) 2023.02.09
[SQL] DROP vs TRUNCATE vs DELETE 비교  (0) 2023.01.19
[SQL] 행(row)데이터 삭제  (0) 2023.01.18
[SQL] VIEW란? (view 생성, 수정, 삭제)  (1) 2023.01.10