Engineering Note

[MySQL] MySQL, 사용자 생성 및 권한 설정 본문

DevOps

[MySQL] MySQL, 사용자 생성 및 권한 설정

Software Engineer Kim 2025. 9. 22. 10:56

1. MySQL 접속

- root 권한으로 접속

mysql -uroot -p

 

 

위 명령어를 입력하면 패스워드 입력하라는 요청이 생기는데 패스워드를 입력하면 MySQL에 접속할 수 있다.

 

2. 사용자 생성

2-1. 로컬 사용자 생성

CREATE USER '사용자명'@'localhost' IDENTIFIED BY '비밀번호';

 

2-2. 외부 접속 가능 사용자 생성

 

-- 특정 IP에서만 접속 허용
CREATE USER '사용자명'@'198.178.1.100' IDENTIFIED BY '비밀번호';

-- 모든 호스트에서 접속허용
CREATE USER '사용자명'@'%' IDENTIFIED BY '비밀번호';

 

 

 

3. 권한 부여

3-1 모든 권한 부여

-- 특정 데이터베이스에 모든 권한
GRANT ALL PRIVILEGES ON 데이터베이스명.* TO '사용자명'@'localhost';

-- 모든 데이터베이스에 모든 권한
GRANT ALL PRIVILEGES ON *.* TP '사용자명'@'localhost';

 

3-2 특정 권한 부여

-- 특정 테이블에만 읽기, 삽입 권한 부여
GRANT SELECT, INSERT ON '데이터베이스명'.'테이블명' TO '사용자명'@'localhost';

 

3-3 읽기 전용 권한

-- 읽기 전용 권한
GRANT SELECT ON '데이터베이스명'.'*' TO '사용자명'@'localhost';

 

 

4. 권한 적용

FLUSH PRIVILEGES;

 

 

CF)MYSQL은 사용자를 인식할 때 사용자명만으로 인식하지 않고 IP와 함께 식별한다. 그래서 사용자명이 같더라도 IP가 다르면 다른 사용자로 인식한다.

-- 이 두 사용자는 MySQL에서 완전히 다른 사용자로 인식
'사용자명'@'localhost'
'사용자명'@'198.123.1.22'

 

 

-- 같은 이름이지만 완전히 다른 3명의 사용자 생성
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'testuser'@'192.168.1.22' IDENTIFIED BY 'password2';
CREATE USER 'testuser'@'%' IDENTIFIED BY 'password3';

-- 각각 다른 권한 부여 가능
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'localhost';
GRANT SELECT ON mydb.* TO 'testuser'@'192.168.1.22';
GRANT SELECT ON publicdb.* TO 'testuser'@'%';
Comments