TEST 라는 DB가 만들어져 있다고 가정함
-
root 계정으로 로그인
- cmd 창 실행 후 아래 명령어 입력
명령어 1
mysql -uroot -p mysql
- cmd 창 실행 후 아래 명령어 입력
-
계정 설정
-
조회
명령어 1
SELECT HOST, USER, PASSWORD FROM USER;
-
추가
명령어 1
CREATE USER [계정명]@[IP] IDENTIFIED BY '[비밀번호]';
예시 1
2
3
4
5-- localhost에서만 접근 가능
CREATE USER user@localhost IDENTIFIED BY '1234';
-- '%'로 하면 모든 IP에서 접근 가능
CREATE USER user@'%' IDENTIFIED BY '1234'; -
삭제
명령어 1
DROP USER [계정명]@[IP];
예시 1
2
3
4
5-- localhost인 경우
DROP USER user@localhost
-- '%'인 경우
DROP USER user@'%'
-
- 권한 설정
-
추가
명령어 1
GRANT [접근권한] ON [데이터베이스명].[테이블명] TO [계정명]@[IP];
예시 1
2
3
4
5
6
7
8-- *.* 로 하면 모든 데이터베이스와 해당 데이터베이스의 모든 테이블에 권한 허용
GRANT ALL PRIVILEGES ON *.* TO user@localhost;
-- TEST 데이터베이스의 모든 테이블에 모든 권한 허용
GRANT ALL PRIVILEGES ON test.* TO user@'%';
-- TEST 데이터베이스의 모든 테이블에 SELECT, INSERT, UPDATE, DELETE 권한만 허용
GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO user@'%'; -
조회
명령어 1
SHOW GRANTS FOR [계정명]@[IP];
예시 1
2
3
4
5-- localhost인 경우
SHOW GRANTS FOR user@localhost;
-- '%'인 경우
SHOW GRANTS FOR user@'%'; -
삭제
명령어 1
REVOKE [접근권한] ON [데이터베이스명].[테이블명] FROM [계정명]@[IP];
예시 1
2
3
4
5-- 모든 데이터베이스의 권한 삭제
REVOKE ALL ON *.* TO user@localhost;
-- 모든 데이터 베이스의 INSERT, UPDATE, DELETE 권한만 삭제
REVOKE INSERT, UPDATE, DELETE ON *.* TO user@localhost;
-
- 적용
- 아래 명령어 실행
명령어 1
FLUSH PRIVILEGES;
- 아래 명령어 실행
[참고]
- 함수를 생성하려면 아래 명령어 실행
명령어 1
SET GLOBAL log_bin_trust_function_creators = ON;