[SQL] : DATABASE(데이터베이스) 관리 기능

김대현·2024년 6월 4일

(1) MySQL 접속
(2) Database 확인
(3) Database 생성
(4) Database 사용 및 삭제
(5) Database USER 관리, USER 권한 및 삭제


(1) MySQL 접속

% mysql -u root -p 
Enter password:

% mysql -u root -pmysql에 접속하기 위해 사용자와 비밀번호를 입력하는 명령어이다.

  • %: 컴퓨터의 명령프롬프트에 명령어을 입력한다고 선언하는 것이다.
  • mysql: 데이터베이스를 관리하는 DBMS 프로그램의 이름이다.
  • -u root: 데이터베이스를 관리할 수 있는 권한을 가진 사용자이다. MYSQL은 기본적으로 사용자는 "root"로 지정되어 있다.
  • -p: 비밀번호를 입력하는 명령어이다.
  • Enter password: 이후 ENTER를 누르면 다음과 같이 비밀번호를 입력하라는 메시지가 나온다.




(2) Database 확인

SHOW DATABASES;

SHOW DATABASES; 명령어를 사용하면 현재 사용자가 접근할 수 있는 모든 데이터베이스 이름들의 목록을 볼 수 있다.

  • 예시
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test_db            |
+--------------------+



(3) Database 생성

CREATE DATABASE dbname;

CREATE DATABASE dbname; 명령어는 Database 이름을 지정해 새로운 Database 를 만드는 것이다.

  • 예시
mysql> CREATE DATABASE testdb;
Query OK, 1 row affected (0.01 sec)
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)



(4) Database 사용 및 삭제

✏ Database 사용

mysql> USE dbname;

SQLDATABASE에서 관리하고 싶은 DATABASE가 있다면 USE dbname; 명령어를 사용하면 지정한 데이터 베이스내에 접속할 수 있다.

-예시

mysql> USE testdb;
Database changed

✏ Database 삭제

mysql> DROP DATABASE dbname;

삭제하고 싶은 DATABASE가 있다면 DROP DATABASE dbname; 명령어를 사용하면 지정한 데이터 베이스를 삭제할 수 있다.

  • 예시
mysql> DROP DATABASE testdb;
Query OK, 0 rows affected (0.02 sec)
#삭제한 database 목록 확인
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)



(5) Database USER 관리와 생성, USER 권한 및 삭제

✏ user 조회

MySQL에서 사용자 정보(user 정보)를 조회하려면 mysql Database로 이동한 후 관련 테이블에서 정보 조회가 가능하다.

  • 예시
mysql> USE mysql;
Database changed

이동한 이후 MySQL에서 사용자 정보(user 정보)를 조회하려면 mysql Database로 이동한 후 SELECT host, user FROM user; 명령어를 사용하면 mysql 내에 존재하는 user(사용자) 정보를 확인할 수 있다.

mysql> SELECT host, user FROM user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | root             |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | debian-sys-maint |
+-----------+------------------+
4 rows in set (0.00 sec)
  • SELECT: SQL 쿼리의 시작 부분으로, 데이터베이스에서 데이터를 선택하고자 할 때 사용한다. 이 키워드는 다음에 오는 열(column)들을 데이터베이스에서 선택하도록 지시한다.

  • FROM: 이 키워드는 SELECT 키워드 다음에 오며, 데이터가 어디부터 선택될지를 지정한다. 즉, 데이터를 추출할 테이블을 지정한다.

  • host, user: 선택하고자 하는 열의 이름을 나열합니다. 여기서는 host와 user라는 두 열을 선택하겠다는 의미이다.

  • host: MySQL 데이터베이스의 user 테이블에서 호스트 정보를 포함하는 열이다. 이 열은 사용자가 접속할 수 있는 호스트 이름이나 IP 주소를 나타내준다.

  • user: MySQL 데이터베이스의 user 테이블에서 사용자 계정명을 포함하는 열이다. 이 열은 MySQL 서버에 정의된 사용자(user) 이름을 나타낸다.

-즉, 이 명령문 쿼리를 실행하면, MySQL 서버에 정의된 모든 사용자 계정과 해당 계정이 접속할 수 있는 호스트 정보를 보여준다.



✏ user 생성

CREATE USER 'username'@'localhost' identified by 'password';
+---------------------+---------------------------------+
| host                | user                            |
+---------------------+---------------------------------+
| localhost           | root                            |
| localhost           | mysql.session                   |
| localhost           | mysql.sys                       |
| localhost           | debian-sys-maint                |
| localhost           | username                        |
| %                   | mysql.infoschema                |
+---------------------+---------------------------------+
  • CREATE USER: MySQL 데이터베이스에서 새로운 사용자를 생성하는 명령어이다.

  • 'username'@'localhost': 새로 생성될 사용자의 이름과 접속 호스트를 지정한다.

  • 'username': 새로 생성될 사용자의 이름입니다. 'username' 자리에 원하는 사용자 이름을 지정하면 된다.

  • 'localhost': 사용자가 접속할 수 있는 호스트를 지정한다. localhost는 외부가 아닌 사용자 계정이 해당 컴퓨터 즉, 로컬에서만 접속할 수 있도록 설정하는 것이다.

  • IDENTIFIED BY 'password': 사용자의 비밀번호를 지정하는 것이다.'password' 자리에 비밀번호를 기입하고 명령문을 실행한다. 이 비밀번호를 사용하여 해당 사용자가 MySQL에 로그인할 수 있다.

  • 즉 해당 명령문 및 쿼리는 현재 PC 에서만 접속 가능한 사용자를 비밀번호와 함께 생성해준다.



✏ user 생성 <외부>

CREATE USER 'username'@'%' identified by 'password';
+---------------------+--------------------------------+
| host                | user                           |
+---------------------+--------------------------------+
| %                   | username                       |
| localhost           | mysql.infoschema               |
| localhost           | mysql.session                  |
| localhost           | mysql.sys                      |
| localhost           | username                       |
+---------------------+--------------------------------+
  • CREATE USER: MySQL 데이터베이스에서 새로운 사용자를 생성하는 명령어이다.

  • 'username'@'%': 외부에서 접속 가능한 사용자를 생성하기 위한 명령어이다. 새로 생성될 사용자의 이름과 접속 호스트를 지정한다.

  • 'username': 새로 생성될 사용자의 이름입니다. 'username' 자리에 원하는 사용자 이름을 지정하면 된다.

  • '%': 와일드카드 문자로, 모든 호스트에서 접속할 수 있음을 의미합니다. 즉, username 사용자는 어떤 호스트에서든 MySQL 서버에 접속할 수 있습니다.

  • IDENTIFIED BY 'password': 사용자의 비밀번호를 지정하는 것이다.'password' 자리에 비밀번호를 기입하고 명령문을 실행한다. 이 비밀번호를 사용하여 해당 사용자가 MySQL에 로그인할 수 있다.

  • 즉 해당 명령문 및 쿼리는 username 이라는 해당 사용자 계정이 외부 호스트에서도 MySQL서버에 접속할 수 있게 설정한다는 의미이다.



✏ user 삭제

DROP USER 'username'@'%';
DROP USER 'username'@'localhost' ;
  • 해당 두 개의 DROP USER 구문은 MySQL에서 특정 호스트에 대한 사용자 계정을 삭제하도록 해준다.



✏ user 권한 조회 및 부여

SHOW GRANTS FOR `username`@`localhost`;
+---------------------+--------------------------------+
| Grants for username@localhost                            |
+---------------------+--------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost'             |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
  • 해당 구문은 특정 사용자에게 부여된 권한을 조회하는 명령어이다. 쿼리를 실행하면 해당 사용자가 현재 어떤 권한을 가지고 있는지를 보여준다.

GRANT ALL ON testdb.* to 'username'@'localhost';
+---------------------+---------------------------------------+
| Grants for username@localhost                               |
+---------------------+---------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost'                |
| GRANT ALL PRIVILEGES ON 'testdb'* TO 'username`@`localhost' |
+---------------------+---------------------------------------+
2 row in set (0.00 sec)
  • GRANT ALL: MySQL에서 사용자에게 권한을 부여하는 쿼리이다. ALL은 모든 권한을 의미하며 사용자에게 testdb 데이터베이스에 대한 모든 권한을 부여한다는 것이다.

  • ON testdb.*: 권한을 부여할 데이터베이스와 테이블을 지정한다. testdb.*testdb 데이터베이스의 모든 테이블에 대한 권한을 부여함을 의미한다. 여기서*는 모든 테이블을 의미하며 모든 테이블을 지정할 때 사용한다.

  • TO 'username'@'localhost': 권한을 받을 사용자와 호스트를 지정합니다.

  • 'username'은 권한을 받을 사용자의 이름입니다.

  • 해당 구문은 'username' 사용자에게 localhost에서 testdb 라는 데이터베이스의 모든 테이블에 대한 모든 권한을 부여하도록 해주는 쿼리이다.



✏ user 권한 조회 및 부여

REVOKE ALL ON testdb.* to 'username'@'localhost';
+---------------------+--------------------------------+
| Grants for username@localhost                            |
+---------------------+--------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost'             |
+---------------------+--------------------------------+
1 row in set (0.00 sec)
  • 해당 구문은 'username' 사용자에게 localhost에서 testdb 라는 데이터베이스의 모든 테이블에 대한 모든 권한을 삭제해도록 해주는 쿼리이다. 데이터베이스를 조회해보면 GRANT ALL PRIVILEGES ON 'testdb'* TO 'username@localhost' 라고 적혀 있던 권한이 삭제된 것을 볼 수 있다.

  • FLUSH PRIVILEGES; : 권한 수정내용이 적용이 잘 되지 않았을 경우 FLUSH PRIVILEGES; 구문을 실행하면 수정내용이 새로고침되어 적용된다.

profile
데이터 분석 스쿨 블로그 입니다.

0개의 댓글