mysql> CREATE USER 'tutorial'@'localhost' IDENTIFIED BY 'PassWord123!!!';
tutorial
은 사용자 ID이고 localhost
는 접속하는 서버가 로컬에 있는지 원격에서의 접속을 허용할지를 정하는 것입니다. 현재 우리는 웹서버와 DB서버가 하나의 장비에 위치하고 있으므로 localhost
만 적어도 접속하는데 아무런 문제가 없습니다. 하지만 호스팅업체등 MySQL서버와 웹서버가 서로 다른 위치에 있는 경우에는 접속하는 서버의 주소를 지정할수 있습니다.
위의 명령어로 사용자를 추가하면 해당 사용자는 아무런 권한도 없는채 생성이 됩니다. 이제 해당 사용자에게 권한을 부여하고자 하는데요. 아래와 같이 명령한다면 해당 사용자에게 모든 데이타베이스의 모든 권한을 부여하게 되어 위험할수 있습니다. 가급적 권한은 꼭 필요한 것만 주도록 하세요.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tutorial'@'localhost' WITH GRANT OPTION;
그렇다면 가장 중요한 권한은 해당 사용자가 접속할 데이타베이스를 지정해주는 것입니다.
mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT on tutorial.* TO 'tutorial'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'tutorial'@'localhost';
만약 이미 부여한 권한을 빼앗고 싶다면 특정권한을 지정하거나, 아래의 두번째 REVOKE명령과 같이 ALL PRIVILEGES를 빼앗을수도 있습니다.
mysql> REVOKE SELECT ON tutorial.* FROM 'tutorial'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'tutorial'@'localhost';
mysql> REVOKE ALL PRIVILEGES ON tutorial.* FROM 'tutorial'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'tutorial'@'localhost';
사용자가 더이상 필요하지 않다면 삭제는 아래와 같이 합니다.
mysql> DROP USER 'tutorial'@'localhost';