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

MYSQL파워강좌 . mysql 2편

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

MYSQL파워강좌 . mysql 2<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><?xml:namespace prefix = st2 ns = "urn:schemas:contacts" />박성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 

----------------------                          --------------------------------

 

1  : MYSQL 클라이언트명령어 mysql 사용법

2  : MYSQL 데이터베이스의 실행(기동) 실행확인

3  : MYSQL root 데이터베이스로 접속하기

4  : MYSQL 일반사용자로 데이터베이스 접속하기

5  : MYSQL 접속시 MYSQL계정과 계정패스워드 지정하여 자동접속하기

6  : MYSQL 소켓파일 위치 지정하여 접속하기

7  : MYSQL서버시 접속포트 지정하여 접속하기

8  : 원격서버의 MYSQL 접속하기

9 : 리눅스 쉘상태에서 특정파일에 저장된 SQL 실행하기 : 데이터베이스생성 (mysql 응용편 #1)

10  : 리눅스 쉘상태에서 특정파일에 저장된 SQL 실행하기 : 호스팅사용자를 위한 DB,사용자등 생성하기 (mysql 응용편 #2)

11  : 리눅스 쉘상태에서 특정파일에 저장된 SQL 실행하기 : 테이블생성 (mysql 응용편 #3)

12  : MYSQL 일반사용자를 위한 명령어 PATH설정하기

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6 : MYSQL 소켓파일 위치 지정하여 접속하기

MYSQL의 에러메시지 가운데 “Can’t connect to local MySQL server…”라는 다음과 같은 에러메시지로 MYSQL 서비스장애가 종종 발생할 수 있습니다.

[root@file bin]# ./mysql -u root -p mysql

Enter password: ********

ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

[root@file bin]#

이 에러의 원인은 MYSQL의 소켓파일인 mysql.sock파일이 없거나 정확하지 않아서 발생하는 에러입니다.

, MYSQL이 실행이 되면 MYSQL의 소켓파일이 /tmp/디렉토리에 다음과 같이 생성이 됩니다.

[root@file bin]# ls -l /tmp/mysql.sock

srwxrwxrwx    1 mysql    mysql           0  2 13 14:10 /tmp/mysql.sock

[root@file bin]#

그리고 MYSQL이 종료되면 이 파일은 자동 삭제됩니다.

“Can’t connect to local MySQL server…”에러메시지가 발생하는 경우에 그 원인은 MYSQL이 종료되어 있거나 또는 mysql.sock소켓파일의 위치가 다르기 때문입니다.

첫번째의 원인이라면 MYSQL을 실행한 후에 접속하면 되겠지만 두번째의 원인이라면 다음과 같이 -S옵션을 사용하여 MYSQL의 소켓파일 mysql.sock의 위치를 정확하게 지정해 주시면 접속이 됩니다.

아래의 예는 mysql.sock파일의 위치가 /var/lib/mysql/mysql.sock이기 때문에 -S옵션을 사용하여 소켓파일의 위치를 정확하게 지정해 준 것입니다. (여기서 S는 대문자 S입니다.)

[root@file bin]# ./mysql -u root -p mysql -S /var/lib/mysql/mysql.sock

Enter password: ********

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

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

Your MySQL connection id is 26 to server version: 4.0.14

 

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

 

mysql>

mysql> exit

Bye

[root@file bin]#

MYSQL의 소켓파일에 대한 에러해결방법을 설명드린 것입니다.

 

 

7 : MYSQL서버시 접속포트 지정하여 접속하기

MYSQL 데이터베이스가 사용하는 기본포트(port)번호는 3306번입니다.  따라서 지금까지의 예에서는 MYSQL접속시에 포트번호를 지정해 주지 않았습니다. 포트번호를 지정하지 않았다고 해서 MYSQL의 포트를 사용하지 않았다는 것은 아닙니다. , 포트번호를 지정하지 않았지만 MYSQL의 기본포트 3306번으로 접속을 한 것입니다. 

하지만 필자는 리눅스 서버와 MYSQL의 보안을 위하여 3306대신 다른 포트번호를 지정하여 사용하곤 합니다. , MYSQL의 기본 서비스포트를 3306대신 다른 번호를 사용하여 서비스를 하는 경우도 종종 있다는 것입니다.

[참고사항]


MYSQL
서비스포트를 3306대신 다른 포트번호로 서비스하려면..

MYSQL
의 기본포트 대신 다른 포트를 사용하여 MYSQL을 설치하시려면 MYSQL 설치단계의 ./configure실행시에 “--with-tcp-port=포트번호옵션에서 사용할 포트번호를 지정하여 설치하시면 됩니다.

또한 MYSQL의 실행시에 사용하는 mysqld_safe사용시에 다음예와 같이 -P옵션(대문자P)을 사용하여 포트번호를 지정하여 실행하시면 됩니다.

[root@file bin]# ./mysqld_safe -P3306 &

[1] 3817

[root@file bin]# Starting mysqld daemon with databases from /usr/local/mysql/data

[root@file bin]#

 

, 예를 들어 서버보안을 위하여 MYSQL의 포트를 3306대신 22222번을 사용하여 서비스되고 있다면 MYSQL 접속시에 사용하는 포트번호 또한 22222을 지정해 주셔야 합니다.

결론적으로 MYSQL의 접속시에 포트번호를 지정하여 사용하려면 다음 예와 같이 -P옵션(대문자P)을 사용하시면 됩니다. 아래의 예는 MYSQL의 접속시에 -P옵션을 사용하여 사용할 포트번호를 22222로 지정하여 접속한 예입니다.

 

[root@file bin]# ./mysql -u root -p mysql -P 22222

Enter password: ********

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

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

Your MySQL connection id is 1 to server version: 4.0.14

 

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

 

mysql>

mysql> exit

Bye

[root@file bin]#

 

첨언한다면 리눅스 서버를 관리하고 있는 많은 서버관리자분들의 입장에서는 무엇보다 중요한 것이 서버보안일 것입니다.  감히 여러분들께 조언해 드린다면 여러분들이 직접관리하는 모든 서버들의 서비스 포트번호를 바꾸어 사용하시는 것이 서버보안에 있어 굉장한 잇점을 줄 수 있으므로 권해드립니다. 예를 들어, 여기서 설명해드린 MYSQL외에도 가장 대표적인 TELNET서비스의 경우 23대신 다른 포트를 사용하시고 FTP 서비스 또한 21대신 다른 포트를 사용하시기 바랍니다.

 

8 : 원격서버의 MYSQL로 접속하기

다음은 MYSQL이 현재 사용중인 로컬서버에 설치되어 있는 것이 아니라 원격서버에 설치되어있는 MYSQL로 접속을 하는 방법에 대한 설명입니다. 즉 원격서버에 설치되어 있는 MYSQL로 접속을 하려면 mysql사용시에 -h옵션을 사용하여 원격서버의 IP주소나 도메인명을 지정해 주시면 됩니다. 그리고 가능한 앞의 예에서 보셨던 -P옵션을 사용하여 포트번호까지 정확하게 지정해 주시기 바랍니다.

[참고사항] 다른 서버에서 MYSQL을 접속가능하게 하려면...

MYSQL
은 기본적으로 현재 사용중인 로컬서버에서만 접속가능하도록 설치됩니다. 하지만 MYSQL설치시에 기본적으로 생성되는 MYSQL관리데이터베이스인 mysql데이터베이스의 db테이블과 user테이블의 host필드값을 ‘%’또는 접속을 허용할 IP주소등을 설정함으로서 원격서버의 접속을 허용하도록 설정할 수 있습니다.

 

, 원격지 서버의 MYSQL로 접속을 하려면 다음과 같이 -h옵션을 사용하여 원격서버의 IP주소나 도메인명을 입력하시면 됩니다. 아래의 예는 현재 사용중인 서버에서 192.168.0.111에 설치되어 있는 MYSQL서버로 접속을 한 것입니다. 물론 192.168.0.111서버의 MYSQL에는 tempuser라는 MYSQL사용자와 temp_db2라는 데이터베이스가 생성되어 있어야합니다. 그리고 192.168.0.111서버의 MYSQL이 기본포트인 3306번호 대신 다른 번호를 사용한다면 -P옵션에 그 포트번호를 지정해 주시면 됩니다. 아래의 예는 기본포트인 3306번 포트를 사용하고 있다는 가정하에 접속한 예입니다.

[root@file bin]# ./mysql -u tempuser -p temp_db2 -h 192.168.0.111 -P 3306

Enter password: ********

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

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

Your MySQL connection id is 28 to server version: 4.0.14

 

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

 

mysql>

mysql> exit

Bye

[root@file bin]#

 

 

9 : 리눅스 쉘상태에서 특정파일에 저장된 SQL문 실행하기 : 데이터베이스생성 (mysql 응용편 #1)

이번에는 MYSQL에 접속을 하지않은 쉘상태에서 실행하고자하는 SQL문이 저장된 파일을 생성하여 그 파일에 저장된 SQL문을 실행하는 방법을 알아보도록 하겠습니다.

이 방법은 주로 root관리자들이 MYSQL사용자를 생성하거나 사용자의 데이터베이스를 생성하기위한 방법으로 많이 사용되는 것입니다.

이번 예에서는 root관리자가 일반사용자가 사용할 데이터베이스를 생성하는 예를 보도록 하겠습니다.

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

[root@file bin]# cat temp.sql

create database tempdb;

[root@file bin]#

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

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

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

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

-rw-r--r--    1 root     root           24  2 13 15:18 temp.sql

[root@file bin]#
[root@file bin]# ./mysql -u root -p mysql < ./temp.sql

Enter password: ********

[root@file 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@file bin]# ./mysql -u root -p mysql

Enter password: ********

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

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

Your MySQL connection id is 14 to server version: 4.0.14

 

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

 

mysql>

mysql> show databases;

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

| Database   |

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

| mysql      |

| picasso_db |

| tempdb     |

| test       |

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

4 rows in set (0.00 sec)

 

mysql>

위의 결과를 보시는 바와 같이 방금 생성한 tempdb라는 새로운 데이터베이스가 생성되어 있다는 것을 확인하실 수 있습니다.

이번 예에서 알 수 있는 것은 MYSQL데이터베이스로 직접 접속하지 않은 리눅스 쉘명령어상태에서도 원하는 SQL문을 실행할 수 있다는 것입니다.

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 박성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  156 명