Database
MySQL 계정생성 및 권한주기
top2blue
2015. 12. 23. 14:39
최고 관리자로 접속
# mysql -u root -p
mysql> USE mysql;
//mysql 데이터베이스 선택
mysql> SELECT host, user, password FROM user;
//사용자 계정 확인
새로운 계정추가
// 로컬 접속
mysql> CREATE USER 'userID'@'localhost' IDENTIFIED BY 'userPassword';
//USER -> 사용자 계정 생성
//'userID' -> 추가할 사용자 계정
//'localhost' -> 로컬 접속만 가능
//IDENTIFIED BY -> 비밀번호 생성
//'userPassword' -> 추가할 사용자 비밀번호
// 원격 접속
mysql> CREATE USER 'userID'@'%' IDENTIFIED BY 'userPassword';
//'%' -> 원격 접속만 가능
user 테이블에 직접 추가
// 로컬 접속
mysql> INSERT INTO user(host, user, password)
-> VALUES ('localhost','userID', password('userPassword'));
// 원격 접속
mysql> INSERT INTO user(host, user, password)
-> VALUES ('%','userID', password('userPassword'));
데이터 베이스 사용권한 추가
// 기존에 존재하는 사용자일 경우 권한 부여, 없을 경우 새로운 사용자도 함께 생성.
// 특정 데이터베이스의 모든 테이블에 접근/추가/수정/삭제 가능
mysql> GRANT ALL PRIVILEGES ON DBName.* TO 'userID'@'localhost'
-> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON DBName.* TO 'userID'@'%'
-> IDENTIFIED BY 'userPassword';
//DBName -> 데이터베이스 이름
//IDENTIFIED BY 'userPassword' -> 기존에 있던 사용자일 경우 생략가능.
비밀번호를 변경하고 싶을 때 이 부분을 추가하면 된다.
// 특정 데이터베이스의 특정 테이블만 접근/추가/수정/삭제 가능
mysql> GRANT ALL PRIVILEGES ON DBName.tableName TO 'userID'@'localhost'
-> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON DBName.tableName TO 'userID'@'%'
-> IDENTIFIED BY 'userPassword';
// 모든 데이터베이스와 모든 테이블에 접근/추가/수정/삭제 가능 (보안문제가 우려되므로 특히 주의해야 함)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'userID'@'localhost'
-> IDENTIFIED BY 'userPassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'userID'@'%' IDENTIFIED BY 'userPassword';
mysql> FLUSH PRIVILEGES; // 변경된 내용 적용
데이터베이스 권한 제거
mysql> REVOKE ALL ON DBName.tableName FROM 'userID'@'localhost';
mysql> REVOKE ALL ON DBName.tableName FROM 'userID'@'%';
mysql> REVOKE ALL ON DBName.* FROM 'userID'@'localhost';
mysql> REVOKE ALL ON DBName.* FROM 'userID'@'%';
mysql> REVOKE ALL ON *.* FROM 'userID'@'localhost';
mysql> REVOKE ALL ON *.* FROM 'userID'@'%';
사용자 제거
mysql> DROP USER 'userID'@'localhost';
mysql> DROP USER 'userID'@'%';