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 |