SW 개발/MySQL_MariaDB
MySQL, MariaDB 데이터베이스 생성 및 권한 부여하기
지단로보트
2017. 7. 27. 18:30
사전지식
데이터베이스 생성
- 보안을 위해 MySQL(MariaDB)의 root 계정 접근은 로컬 서버에서만 허용해야 한다. 애플리케이션에서 사용할 데이터베이스를 생성하려면 로컬 서버에서 해당 데이터베이스를 생성하고 애플리케이션 서버에서만 접근할 수 있도록 접근 권한을 부여해야 한다.
# 데이터베이스 로컬 서버 접속 후 root 계정으로 클라이언트 실행
$ sudo mysql -u root -p
# somedb 데이터베이스 생성
mysql> CREATE DATABASE somedb;
# someuser/somepassword 계정에 somedb 데이터베이스의 로컬 접속을 허용
# someuser 계정이 존재하지 않을 경우 자동 생성
mysql> GRANT ALL ON somedb.* TO 'someuser'@'localhost' IDENTIFIED BY 'somepassword';
# someuser/somepassword 계정에 somedb 데이터베이스의 10.0.0.1로부터의 원격 접속을 허용
mysql> GRANT ALL ON somedb.* TO 'someuser'@'10.0.0.1' IDENTIFIED BY 'somepassword';
# someuser/somepassword 계정에 somedb 데이터베이스의 10.0.0.으로 시작하는 모든 원격 접속을 허용
mysql> GRANT ALL ON somedb.* TO 'someuser'@'10.0.0.%' IDENTIFIED BY 'somepassword';
# 앞서 생성한 사용자 정보를 조회
mysql> SELECT * FROM information_schema.user_privileges;
+----------------------------+---------------+-------------------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+----------------------------+---------------+-------------------------+--------------+
| 'someuser'@'localhost' | def | USAGE | NO |
| 'someuser'@'10.0.0.1' | def | USAGE | NO |
| 'someuser'@'10.0.0.%' | def | USAGE | NO |
+----------------------------+---------------+-------------------------+--------------+
# 사용자와 원격지 단위로 상세한 권한 정보를 조회
mysql> SHOW GRANTS FOR 'someuser'@'localhost';
+-----------------------------------------------------------------------------------------------------------------+
| Grants for someuser@localhost |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'someuser'@'localhost' IDENTIFIED BY PASSWORD '*6444A540558B753711AF5995375B0C14B1257742' |
| GRANT ALL PRIVILEGES ON `somedb`.* TO 'someuser'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------+
# 앞서 생성한 사용자를 삭제
mysql> DROP USER 'someuser'@'localhost';
mysql> DROP USER 'someuser'@'10.0.2.2';