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

MySQL강좌9편: 새로운 MYSQL사용자를 위한 MYSQL내의 설정방법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌9: 새로운 MYSQL사용자를 위한 MYSQL내의 설정방법

 

서버관리자, 특히 호스팅서버관리자는 새로운 가입자가 등록되었을 때에 서버에서 그 사용자가 사용할 수 있는 여러가지 작업을 해야한다. 이러한 작업들에는 여러가지 작업들이 있지만 여기에서는 MYSQL에 접속하여 사용할 수 있도록 하기위한 설정에 대해서 알아보도록 하겠다. 즉 호스팅서버로 사용되는 리눅스에서는 새로운 호스팅사용자의 서비스신청에 의해 MYSQL 데이터베이스를 사용하도록 제공하기위하여 다음과 같은 설정을 해야한다.

 

① 사용자의 데이터베이스생성
② 사용자의 DB권한설정
③ 사용자의 MYSQL계정생성 및 MYSQL계정 패스워드 생성 및 권한설정

즉 새로운 사용자의 요구로 인하여 MYSQL에 위와 같은 작업을 해야한다. 이 작업을 하기 위하여 매번 MYSQL에 접속하여 SQL문을 직접 입력하여 작업하기란 보통이상의 인내를 요하는 작업일 것이다. 따라서 우리는 위의 3가지 작업을 한번에 완료할 수 있는 SQL문을 특정 텍스트파일에 저장해둔 다음 앞서 보았던 방법대로 쉘에서 바로 실행하여 위의 3가지를 한꺼번에 생성하도록 한다.

 

먼저, 다음과 같이 위의 3가지 작업을 하기위한 SQL문을 다음과 같이 생성해야 한다.

 

[root@sulinux bin]#cat temp2.sql

create database temp_db2;

insert into db values('localhost','temp_db2','tempuser','Y','Y','Y','Y','Y','Y','Y','Y','Y',

'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

insert into user values('localhost','tempuser',password('11111111'),'N','N','N','N','N','N',

'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','1',

'','','','','','','');

[root@sulinux bin]#

 

위의 3가지 SQL문을 차례대로 간단히 설명하면 다음과 같다.

 

create database temp_db2;

temp_db2라는 새로운 데이터베이스를 생성하는 SQL문이다.

 

insert into db values('localhost','temp_db2','tempuser','Y','Y','Y','Y','Y','Y','Y','Y','Y',

'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

MYSQL mysql이라는 관리데이터베이스의 db테이블에 temp_db2라는 새로운 데이터베이스의 생성과 소유자 및 권한을 설정하는 SQL문이다.

 

insert into user values('localhost','tempuser',password('11111111'),'N','N','N','N','N','N',

'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','1',

'','','','','','','');

MYSQL mysql이라는 관리데이터베이스의 user테이블에 tempuser라는 새로운 사용자와 패스워드, 그리고 이 사용자가 사용할 각 권한들을 설정하는 SQL문이다.

 

그리고 다음과 같이 “./mysql -u root -p mysql < ./temp2.sql”을 실행하여 temp2.sql에 저장된 SQL문을 실행한 것이다.

 

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

-rw-r--r-- 1 root root 367  4 28 07:38 temp2.sql

[root@sulinux bin]#

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

Enter password: ********

[root@sulinux bin]#

 

위의 예처럼 “mysql -u root -p mysql < ./temp2.sql”을 실행 한 후에 MYSQL root 패스워드를 입력하고 아무런 메시지없이 종료되었다면 temp2.sql파일에 저장되어있는  SQL문들이 정상적으로 실행되었다는 것을 의미한다. 만약 temp2.sql문에 저장된 단 하나의 SQL문이라도 비정상적으로 실행되었다면 에러가 발생한 행과 그 이하의 행들은 모두 실행되지 않고 에러메시지가 발생하면서 실행이 멈추게 된다.

 

[주의사항] SQL파일로 mysql실행시 주의사항

 

만약 이렇게 실행한 후에 에러가 발생하였다면 에러가 발생한 SQL문의 이전까지는 모두 정상적으로 실행되었으며 에러가 발생한 SQL문을 포함하여 이후의 SQL문들은 모두 실행이 되지 않는다는 점에 유념하기 바란다.

 

 

이후의 설명은 방금 실행한 temp2.sql문이 정상적으로 실행되었는가를 확인하기 위한 방법으로써 어렵다고 생각된다면 굳이 확인할 필요없이 건너뛰어도 무방하다. 위의 실행이 정상적인가에 대한 의문점이 있는 분만 참고하기 바란다.

 

, 그럼 위의 temp2.sql문이 정상적으로 실행되었는가를 확인하기 위하여 다음과 같이 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 21

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            |

| temp_db2           |

| test               |

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

7 rows in set (0.00 sec)

 

mysql>

 

위와같이 “show databases”의 결과를 보듯이 temp_db2라는 새로운 데이터베이스가 생성되어 있음을 알 수 있다. 그리고 다음은 MYSQL의 관리데이터베이스인 mysql데이터베이스의 db테이블에 temp_db2라는 데이터베이스에 설정이 정상적으로 입력되었는가를 확인한 것이다.

 

mysql> select * from db where user='tempuser';

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

| Host      | Db       | User     | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Execute_priv | Event_priv | Trigger_priv |

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

| localhost | temp_db2 | tempuser | Y           | Y           | Y           | Y           | Y           | Y         | Y          | Y               | Y          | Y          | Y                     | Y                | Y                | Y              | Y                   | Y                  | Y            | Y          | Y            |

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

1 row in set (0.03 sec)

 

mysql>

 

위의 결과를 보는 바와같이 정상적으로 입력되었음을 알 수 있다. 그리고 다음은 MYSQL의 관리데이터베이스인 mysql데이터베이스의 user테이블에 tempuser라는 새로운 사용자가 정상적으로 입력되었는가를 확인한 것이다.

 

mysql> select * from user where user='tempuser';

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

| Host      | User     | Password                                  | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |

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

| localhost | tempuser | *E9D057131C22A0D76B4AAD2C61655BDFA706E637 | N           | N           | N           | N           | N           | N         | N           | N             | N            | N         | N          | N               | N          | N          | N            | N          | N                     | N                | N            | N               | N                | N                | N              | N                   | N                  | N                | N          | N            |          |            |             |              |             0 |           0 |               0 |                    0 |

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

1 row in set (0.00 sec)

 

mysql>

mysql> exit

Bye

[root@sulinux bin]#

 

위의 결과를 보는 바와같이 정상적으로 입력되었음을 알 수가 있다. 이제 tempuser라는 MYSQL사용자와 이 사용자 소유의 temp_db2라는 데이터베이스가 모두 생성되었다. 이제 tempuser라는 사용자는 MYSQL을 사용할 수 있는 MYSQL user가 되었다.



관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,158 명
  • 현재 강좌수 :  36,517 개
  • 현재 접속자 :  339 명