강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌8편: 리눅스 쉘상태에서 특정파일에 저장된 SQL문 실행하기 : 데이터베이스생성

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌8: 리눅스 쉘상태에서 특정파일에 저장된 SQL문 실행하기 : 데이터베이스생성

 

이번에는 MYSQL에 접속하지않은 쉘상태에서 실행하고자하는 SQL문이 저장된 파일을 생성하여 그 파일에 저장된 SQL문을 실행하는 방법을 알아보도록 하겠다.  이 방법은 주로 root관리자들이 MYSQL사용자를 생성하거나 사용자의 데이터베이스를 생성하기위한 방법으로 많이 사용되는 것이다. 이번 예에서는 root관리자가 일반사용자가 사용할 데이터베이스를 생성하는 예를보도록 하겠다.

 

먼저 다음과 같이 생성할 데이터베이스명이 저장된 파일을 생성하도록 하자. 파일은 vi명령어로 만드는 것이 가장 일반적이다. 필자가 미리 만들어 둔 temp.sql파일을 cat명령어로 확인한 것이다.

 

[root@sulinux bin]#cat temp.sql

create database temp_db;

[root@sulinux bin]#

 

temp.sql파일에 저장된 “create database tempdb;”라는 SQL문이 MYSQL root에 의해서 실행되면 MYSQL에는 tempdb라는 새로운 데이터베이스가 생성될 것이다.

 

아래는 temp.sql파일에 저장된 “create database tempdb;”이라는 SQL문을 리눅스 쉘상태에서 MYSQL root계정으로 실행한 것이다.

 

[root@sulinux bin]#ls -l temp.sql

-rw-r--r-- 1 root root 25  4 28 07:30 temp.sql

[root@sulinux bin]#

[root@sulinux bin]#/usr/local/mysql/bin/mysql -u root -p mysql < ./temp.sql

Enter password: ********

[root@sulinux bin]#


위와같이 실행할 SQL문이 저장되어있는 temp.sql파일을 미리 생성하여 “./mysql -u root -p mysql < ./temp.sql”와 같이 실행한 후에 MYSQL root패스워드를 입력하면 temp.sql파일에 저장된 “create database tempdb;” 이 실행되어 tempdb라는 새로운 데이터베이스가 생성 된다.

 

아래는 방금 생성한 tempdb라는 데이터베이스가 생성이 되었는가를 확인하기 위하여 MYSQL root로 접속한 후에 “show databases”라는 MYSQL명령어로 확인한 것이다.

 

[root@sulinux bin]#/usr/local/mysql/bin/mysql -u root -p mysql

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 17

Server version: 5.1.32 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| picasso_db         |

| sspark_db          |

| temp_db            |

| test               |

+--------------------+

6 rows in set (0.03 sec)

 

mysql>

 

위의 결과를 본 바와같이 방금 생성한 tempdb라는 새로운 데이터베이스가 생성되어있다는 것을 확인할 수 있다.  이번 예에서 알 수 있는 것은 MYSQL데이터베이스로 직접 접속하지 않은 리눅스 쉘명령어상태에서도 원하는 SQL문을 실행할 수 있다는 것이다. 다음에는 이 방법을 이용하여 데이터베이스가 아닌 테이블을 생성해보도록 하겠다.

 

 

리눅스 쉘상태에서 특정파일에 저장된 SQL문 실행하기 : 테이블생성

 

앞의 예에서 리눅스 쉘에서 특정파일에 저장되어있는 SQL문을 실행하여 새로운 데이터베이스를 생성하는 방법에 대해서 알아보았다. 이번에는 리눅스 쉘에서 특정파일에 저장되어있는 SQL문을 실행하는 방법으로 특정데이터베이스에 테이블을 생성하는 예를 보도록하겠다.

 

먼저 테이블을 생성하는 SQL문이 저장된 파일을 생성하였다. 다음은 temptable이라는 테이블을 생성하는 SQL문이 저장된 temp3.sql파일의 내용을 cat명령어로 확인한 것이다.

 

[root@sulinux bin]#cat temp3.sql

create table temptable (

uid mediumint(3) NOT NULL,

name varchar(12) NOT NULL,

PRIMARY KEY (uid)

);

[root@sulinux bin]#

 

이 테이블을 앞의 예에서 생성하였던 temp_db라는 데이터베이스에 생성해보도록 하겠다. 그리고 다음과 같이 temp3.sql파일에 저장되어있는 SQL문을 실행하였다. 이번 실행에서는 temp_db라는 데이터베이스에 새로운 테이블인 temptable을 생성하기 위하여 다음과 같이 실행하였다.

 

[root@sulinux bin]#ls -l temp3.sql

-rw-r--r-- 1 root root 100  4 28 07:33 temp3.sql

[root@sulinux bin]#

[root@sulinux bin]#/usr/local/mysql/bin/mysql -u root -p temp_db < ./temp3.sql

Enter password: ********

[root@sulinux bin]#

 

위의 예처럼 아무런 에러메시지 없이 종료되었다면 SQL문이 정상적으로 실행되어 temp_db 데이터베이스에 temptable이라는 테이블이 생성되었을 것이다. 아래는 위와 같은 방법으로 테이블을 생성한 후에 실제로 테이블이 생성되었는가를 확인하고자 하는분들만 참고하기 바란다.

 

위와같이 정상적으로 실행이 된 후에는 테이블이 생성되었는가를 확인해 봐야한다. 따라서 root라는 MYSQL사용자로 temp_db라는 데이터베이스로 접속하기 위하여 아래와 같이 “mysql -u root -p temp_db”를 실행하였다.

 

[root@sulinux bin]#/usr/local/mysql/bin/mysql -u root -p temp_db

Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 19

Server version: 5.1.32 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

mysql> show tables;

+-------------------+

| Tables_in_temp_db |

+-------------------+

| temptable         |

+-------------------+

1 row in set (0.03 sec)

 

mysql>

mysql> desc temptable;

+-------+--------------+------+-----+---------+-------+

| Field | Type         | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| uid   | mediumint(3) | NO   | PRI | NULL    |       |

| name  | varchar(12)  | NO   |     | NULL    |       |

+-------+--------------+------+-----+---------+-------+

2 rows in set (0.00 sec)

 

mysql>

mysql> exit

Bye

[root@sulinux bin]#

 

접속한 후에 “show tables;”로 확인해 보면 temptable이라는 새로운 테이블이 생성되어 있음을 알 수 있다. 그리고 새로 생성된 temptable의 테이블구조를 확인해 보기 위하여 “desc temptable;”을 실행하면 temp3.sql파일에 정의된 SQL문이 지시한 대로 정상적으로 생성이 되어있다는 것을 확인할 수 있다.

 

다음은 이 방법을 조금 응용하여 새로운 MYSQL사용자를 위한 설정방법에 대한 설명이다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  99 명