티스토리 뷰

Linux

mysql 사용자등록,기본사용법

애플자라 2007. 8. 29. 23:17
반응형
<< 서론 >>
MySQL 설치를 한후 사용방법을 몰라 한참 자료를 찾았지요..
자료가 없어 고민하다가 MySQL 메일링 리스트에 올라오는
글들을 참고로 사용법을 알아내었지요.. 물론 영문 메뉴얼도 무척
도움이 되었답니다. 내용은 초기 인스톨후 root 사용자 암호
설정방법과 DB사용자 등록및 권한설정, 데이타베이스 생성 방법,
기본 사용법 입니다.
많은 사람들에게 도움이 되었으면 합니다.....
 
        #######################################
        #                                    #
        #    MySQL 설치후 기본적인 사용법과  #
        #          root의 암호설정            #
        #                                    #
        #######################################
 
 
        1. MySQL 사용하기
 
    1.1 MySQL 서버 시작하기
 
 MySQL이 정상적으로 설치 되었다면 그리고 디폴트 옵션으로 설치
하였다면 /usr/local/bin/ 디렉토리에 관련 실행 파일이 설치 되었
을 것이다. 먼저 MySQL 서버를 실행하는 명령은 다음과 같다.
물론 root 아이디로 실행해야 한다.(다른방법이 있으면 알려주세요)
 
    mysql.server start
 
 위와 같이 입력하면 서버가 실행된다.  두개의 프로세서가 데몬상태로
실행되는데, safe_mysqld, mysqld 이렇게 두개이다.
이 두개의 프로세서가 실행되고 있다면 이제 MySQL을 사용할수 있다.
MySQL 두번째 강좌에서 보면 위의 두 프로그램에 대한 설명이 나와 있다.
이 상태에서 아래와 같이 MySQL을 사용할수 있는 가상 터미날을 실행시킨다.
 
    mysql -u root mysql
 
 MySQL이 처음 설치되면  DB admin user 는 root 이다. 몰론 이것은 변경
할수도 있다. 디폴트로 설치한 경우 암호가 처음에는 생성되어 있지 않으
므로 위와 같이 하면 실행이 된다. 위의 명령에 대한 설명은 다음과 같다.
 
  mysql      -u          root              mysql
 실행파일  유저선택    root db 유저    사용할데이타베이스
 
 그외 몇가지 간단한 옵션이 있으나 필요하면 mysql -h 하여 내용을 참고
하기 바란다. 그리고, root 유저에 암호를 설정한 후 부터는 -p 옵션을
하나더 추가하여 실행하기 바란다. 이 옵션은 패스워드를 입력받는 옵션이다.
 
 
    1.2 mysql 프로그램의 사용
 
  mysql을 실행하여 간단한 동작을 하여보자.
mysql은 일반 유저로 실행하여도 되는 프로그램이다.
 
$ mysql -u root mysql                        ---> DB 사용을 위한 실행
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.21.27-gamma-log
 
Type 'help' for help.
 
mysql>
 
위와 같이 연결된다. 여기서 몇가지 간단한 테스트용 명령을 적는다.
 
mysql> show databases                  --> 데이타베이스 종류보기
    -> \g
+----------+
| Database |
+----------+
| mysql    |
| test    |
+----------+
2 rows in set (0.00 sec)
 
mysql> show tables from mysql          --> mysql상의 테이블 정보 보기
    -> \g
+-----------------+
| Tables in mysql |
+-----------------+
| db              |
| func            |
| host            |
| user            |
+-----------------+
4 rows in set (0.00 sec)
 
mysql> show columns from db            --> db table 칼럼정보 보기
    -> \g
+-------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| Host        | char(60)      |      | PRI |        |      |
| Db          | char(32)      |      | PRI |        |      |
| User        | char(16)      |      | PRI |        |      |
| Select_priv | enum('N','Y') |      |    | N      |      |
| Insert_priv | enum('N','Y') |      |    | N      |      |
| Update_priv | enum('N','Y') |      |    | N      |      |
| Delete_priv | enum('N','Y') |      |    | N      |      |
| Create_priv | enum('N','Y') |      |    | N      |      |
| Drop_priv  | enum('N','Y') |      |    | N      |      |
+-------------+---------------+------+-----+---------+-------+
9 rows in set (0.00 sec)
 
mysql> show index from db              --> db table의 인덱스정보기
    -> \g
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part |
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
| db    |          0 | Host    |            1 | Host        |
 A        |    4 |    NULL |
| db    |          0 | Host    |            2 | Db          |
 A        |    4 |    NULL |
| db    |          0 | Host    |            3 | User        |
 A        |    4 |    NULL |
| db    |          1 | User    |            1 | User        |
 A        |  NULL |    NULL |
+-------+------------+----------+--------------+-------------+
-----------+-------------+----------+
4 rows in set (0.00 sec)
 
mysql> show status                    --> MySQL의 상태정보 보기
    -> \g
+--------+-----------------+-----------+---------------+---------
+-------------+
| Uptime | Running_threads | Questions | Opened_tables | Reloads
| Open_tables |
+--------+-----------------+-----------+---------------+---------
+-------------+
|  1493 |              1 |        26 |            4 |      1
|          4 |
+--------+-----------------+-----------+---------------+---------
+-------------+
1 row in set (0.00 sec)
 
mysql> show variables                  --> MySQL 환경변수보기
    -> \g
+--------------------+---------------------------------+
| Variable_name      | Value                          |
+--------------------+---------------------------------+
| back_log          | 5                              |
| basedir            | /usr/local/                    |
| datadir            | .                              |
| join_buffer        | 131072                          |
| key_buffer        | 1048568                        |
| language          | /usr/local/share/mysql/english/ |
| max_allowed_packet | 65536                          |
| max_connections    | 90                              |
| max_join_size      | 4294967295                      |
| max_sort_length    | 1024                            |
| net_buffer_length  | 8192                            |
| port              | 3306                            |
| record_buffer      | 131072                          |
| skip_locking      | 1                              |
| socket            | /tmp/mysql.sock                |
| sort_buffer        | 2097144                        |
| table_cache        | 64                              |
| thread_stack      | 65536                          |
| tmp_table_size    | 1048576                        |
+--------------------+---------------------------------+
19 rows in set (0.00 sec)
 
mysql> select * from db                  --> db 테이블의 데이타 가져오기
    -> \g
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
| Host      | Db      | User      | Select_priv | Insert_priv |
 Update_priv |Delete_priv | Create_priv | Drop_priv |
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
| %        | test    |            | Y          | Y          |
 Y          |Y          | Y          | Y        |
| %        | test\_%  |            | Y          | Y          |
 Y          |Y          | Y          | Y        |
| localhost | binggo  | binggo    | Y          | Y          |
 Y          |Y          | Y          | Y        |
+-----------+----------+------------+-------------+-------------+
-------------+-------------+-------------+-----------+
3 rows in set (0.00 sec)
 
mysql>
 
 
 위의 명령은 기본적인 명령으로서 실제 mysql 을 사용할때
자주 사용될 명령이라고 생각된다. 기타 sql문은 강좌 3에서
정리하였으므로 생략하기로 한다.
 
 
        2. MySQL DB admin user 암호걸기
 
  MySQL 을 설치후 가장 먼저 해야 할 일은 MySQL의 admin 인
root (DB user 임)의 암호를 설정하는 일이다. 이것은 서버가
인터넷상에 접속되어 있을경우 보안을 위하여 가장 먼저해야
하는 일이라고 생각된다. 암호를 설정하는 방법은 다음과 같다.
먼저 admin 유저인 root 아이디의 암호를 설정하기로 한다.
 
mysql> update user
    -> set password = password('testpass')
    -> where user = 'root'
    -> \g
Query OK, 2 row affected (0.00 sec)
 
mysql>
 
위를 실행하면 일반적으로 user 테이블상에 root 아이디가 두개가 root
아이디가 등록 되어 있으므로 2 row 의 비밀번호가 변경이 된다.
여기시 확인을 위하여 아래의 명령을 실행해 본다.
 
mysql> select * from user
    -> \g
  . . . .
  . . . .
 
테이블상에 저장된 내용이 출력될 것이다.
 
자 이제부터는 admin 유저인 root로 mysql에 접속할 경우 꼭 password를
입력해야 한다. 즉 아래와 같이 실행하여야 한다.
 
$ mysql -u root -p mysql
Enter password:
 
암호를 물을때 암호를 입력하면 mysql을 사용할수 있다.
 
 
        3. 새로운 데이타 베이스 생성과 사용자 연결
 
    3.1 데이타 베이스의 생성
 
 데이타베이스 생성의 방법은 두가지가 있다. mysqladmin 프로그램을
이용하여 root 아이디로 shell 상에서 생성하는 방법과 또하나 mysql
프로그램 상에서 생성하는 방법이다.
 
 먼저 mysqladmin 프로그램을 이용하는 방법이다.
 
mysqladmin create soonhg    --> 이경우 soonhg 라는 데이타베이스 생성
 
admin 인 root 에 암호를 설정한 경우 다음과 같이 실행한다.
 
mysqladmin -u root -p create soonhg
 
이 경우 디폴트로 설치한 경우 /usr/local/var/soonhg 라는 디렉토리가 생성
된다. 이 디렉토리가 데이타 베이스 공간으로 이용될 곳이다. 즉 soonhg 라는
데이타 베이스 공간에 테이블을 생성할 경우 soonhg 라는 디렉토리로 관련된
파일이 생성되며 데이타가 저장된다.
 
*******************************************************************
중요한 tip......
*******************************************************************
 MySQL과 주고 밍는 각종 내용은 /usr/local/var 상의 full도메인명.log
파일상에 모두 저장된다. 만일 동작 상태를 알고 싶다면 터미날을 하나 더
열어서 tail -f full도메인명.log 하여 MySQL과의 주고받는 내용을
모니터링 할 수 있다.
*******************************************************************
 
 두번째 방법으로 mysql을 이용하는 법이다. mysql 실행상태에서 아래와 같이
한다. (admin 인 root 아이디로 mysql 에 접속)
 
mysql> create database soonhg
    -> \g
Query OK, 1 row affected (0.00 sec)
 
mysql>
 
 위의 두가지 방법중 어느 방법을 사용하여도 무관하다. 개인적으로는 mysql
상에서 데이타베이스를 생성하는것을 권장한다. 왜냐하면 계속하여 작업을
해야할것들이 있기 때문이다.
 
 
    3.2 데이타베이스와 mysql 관리 테이블과의 연결 및 사용자등록 및 특권정의
 
 자 이제 생성된 데이타베이스와 데이타베이스 관리및 엑세스 권한등을 정의
하고 있는 mysql 상의 db, user 테이블에 방금 생성된 soonhg 테이블의 내
용을 정의 하자.
 
먼저 이 soonhg 데이타베이스는 모든 호스트 상에서 접근이 가능하도록 만들
기로 한다. 그리고 사용자는 id 로 park 라는 DB user 를 생성한다고 하자.
sql 문은 다음과 같다.
 
mysql> insert into db
    -> (host,db,user,select_priv,insert_priv,update_priv,delete_priv,
    -> create_priv,drop_priv)
    -> values ('%','soonhg','park','Y','Y','Y','Y','Y','Y')
    -> \g
Query OK, 1 row affected (0.00 sec)
 
mysql>
 
 위의 sql문에서 보면 park 이라는 사용자는 soonhg 데이타베이스에 대하여
select,insert,update,delete,create,drop 권한이 모두 주어졌다. 이것은
하나의 soonhg 데이타 베이스에 대하여 각 sql 명령에 대한 권한을 개별적
으로 줄수 있다는 것을 의미한다.
select * from db 라는 sql 문을 이용하여 정상적으로 insert 되었는지
확인해 보기 바란다.
 
 자 이제 park 라는 db 사용자에 대한 등록을 할 차례이다.
다음과 같은  sql 문을 만들어 실행한다.
 
 
mysql> insert into user
    -> (host,user,password,select_priv,insert_priv,
    -> update_priv,delete_priv,create_priv,drop_priv,
    -> reload_priv,shutdown_priv,process_priv,file_priv)
    -> values ('localhost','park',password('park'),'N',
    -> 'N','N','N','N','N','N','N','N','N')
    -> \g
Query OK, 1 row affected (0.00 sec)
 
mysql>
 
 위와 같이 하여도 되고 간단히 아래와 같이 하여도 무방하다.
 
mysql> insert into user
    -> (host,user,password)
    -> values ('localhost','park',password('park'))
    -> \g
Query OK, 1 row affected (0.00 sec)
 
mysql>
 
 host,user,password  이외의 칼럼들은 모두 디폴트로 'N' 으로 설정
되어 있으므로 위와 같이 하면된다. 여기서 db 테이블과 user 테이블은
특권상에서 약간의 차이점이 있다.  db 테이블 상에서 설정되지 않고
user 테이블 상에만 설정되어진 DB 사용자는 user 테이블 상에서 설정
된 권한을 존재하는 모든 데이타베이스에 대하여 인정받는다.
 이러한 이유로 일반 사용자인 경우는 user 테이블 상에는 모든 권한을
'N' 로 설정하여야 하고 각 DB user 가 사용할 데이타베이스에 대한
권한을 DB 테이블에 다시 정해주는 것이다.
 즉, 데이타베이스가 여러개 존재한다고 가정하자.  aaa, bbb, ccc 라는
세개의 데이타베이스가 존재할때, park 이라는 DB 사용자는 aaa 라는
데이타베이스만 이용하게 하려고 설정하려고 한다고 하자.
 
 이경우는  user 테이블에는 모든 권한을 'N' 상태로 설정하고 db 테이블
에는 aaa 라는 테이블에 대하여 모든 권한을 'Y' 라고 설정하면 이 park
라는 db 사용자는 aaa 라는 데이타베이스에 대하여 사용권한이 주어질
것이다. 잘 이해가 가지 않는다면 몇번 더 자세히 읽어보고 test 해본다면
쉽게 이해할 수 있을것이다.
 
*******************************************************************
중요한 tip......
*******************************************************************
 user 테이블에 사용자를 insert, update  한 경우 MySQL을 꼭 재기동
시켜 주어야만 한다. 명령은 다음과 같다.
    myaqladmin -u root -p reload
이 명령은 user 테이블에서 사용자 정보를 다시 읽어서 MySQL 을 다시
실행시켜준다.
*******************************************************************
 
 
        4. 테이블의 생성
 
 테이블의 생성은 일반적인 sql 문장이므로 간단히 테이블 하나 생성하는
예제를 적는것으로 대신하겠다.
위에서 생성한 사용자와 사용자를 위한 테이블을 이용하여 작업을 하여보자
 
먼저 mysql을 실행한다. 실행은 그냥 일반 계정 사용자로 한다.
 
$ mysql -u park -p soonhg
Enter password: ****          <-- 여기서 password 인 park을 입력한다.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17 to server version: 3.21.27-gamma-log
 
Type 'help' for help.
 
mysql>
 
 
자 MySQL에 접속되었다. 이제 table을 생성하여 보자. 아래는 individual
테이블 생성을 위한 SQL 문장이다.
 
create table individual(
empno  char(16)  primary key,
name  char(20)  not null,
sex    char(2),
addr  char(80),
tel    char(15)
)
 
위의 테이블은 개인정보 테이블로 간단히 만든것이다. empno 가 키가 되어
저장된다. 물론 index 테이블이 하나 생성되며 empno 가 인덱싱 되어진 테
이블이 생성될것이다. not null 은 말그대로 name 칼럼은 null 값은 받지
않겠다는 것이고.....
 
자 그럼 insert 문장을 하나 작성해 보자
 
insert into individual
values ('1','박순행','1','서울시 중랑구 상봉동 LG apt.','02-777-7777')
 
위의 sql문을 실행하면 한 row의 데이타가 insert 된다. 그럼 이제
select 문을 이용하여 읽어보자.
 
mysql> select *
    -> from individual
    -> \g
+-------+--------+------+------------------------------+-------------+
| empno | name  | sex  | addr                        | tel        |
+-------+--------+------+------------------------------+-------------+
| 1    | 박순행 | 1    | 서울시 중랑구 상봉동 LG apt. | 02-777-7777 |
+-------+--------+------+------------------------------+-------------+
1 row in set (0.00 sec)
 
 
위와 같이 출력 될 것이다. 여러가지 sql문장을 테스트 해보면 될것이다.
 
 
<< 결론 >>
 많이 알지도 못하면서 괜히 시작한 것은 아닌가 합니다. 하지만 msql보다 매우
뛰어난 기능을 가지고 있고 또 mysql을 사용하고자 하는 분이 저처럼 사용에 관
련된 자료가 없어서 고생하지 않도록 하기 위하여 짧은 지식으로나마 이렇게
글을 올려 봅니다.
 다음 강좌에서는 MySQL 과 C 언어와의 연결법에 대하여 강의해 보도록 하겠습
니다. 저의 작은 강좌가 많은 사람들에게 도움이 되었으면 합니다.


출처 - http://www.zone7.info






MYSQL DB생성 & 사용자계정생성 / 삭제


데이터베이스 생성
SQL > create database DB_이름 ;

사용자계정생성과 DB권한넘기는것을 GRANT 문으로 한방에 하겠습니다..

SQL > GRANT ALL PRIVILEGES ON 디비네임.* TO 사용자아이디@localhost IDENTIFIED by '비밀번호';
다음과 같은 형태로 해주시면 됩니다 .

privileges 리로딩

SQL > flush privileges;


출처 - http://dev.dasida.com

반응형

'Linux' 카테고리의 다른 글

* JSP 작업을 위한 선작업  (0) 2007.08.29
RedHat 9 (메일서버 (sendmail) 설치 및 운영)  (0) 2007.08.29
MYSQL - Tomcat 연동  (0) 2007.08.29
* Tomcat 설치  (0) 2007.08.29
* Apache 설치  (0) 2007.08.29
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함