웹마스터 팁

NOP_0x90 Document No.2
-----------------------------------------------------------------------------

         Apache 2.0.46 + php 4.3.2 + mysql 4.0.13 설치하기(Mysql 4.0.13)

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

작 성 자 : 최훈규(NOP_0x90)
작 성 일 : 2003년 7월 5일
이 메 일 : naneker@hanmail.net
P.S 잘못된 내용은 메일 보내주세요
----------------------------------------------------------------------------

[다운로드]

Apache : http://www.apache.org
php    : http://www.php.net
mysql  : http://www.mysql.com

p.s 반드시 소스파일을 다운받으세요 (확장자 tar.gz)
    경어는 생략하겠습니다.
-----------------------------------------------------------------------------

[설치하기]

p.s SQL을 어느정도 공부하신분정도???...


        mysql데몬이 시작이 됬으면 root 콘솔상에서 mysql을 입력하고 엔터를 누르면 데이타베이스에 접속이 된다.

        [root@localhost /usr/local/mysql/share/mysql]# mysql
        Welcome to the MySQL monitor.  Commands end with ; or g.
        Your MySQL connection id is 109 to server version: 4.0.13

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

        mysql>          

        여기에서 mysql데이타베이스에 그냥 접속이 되는것은 아직 설정을 해주지 않았기 때문이다.
        mysql>에서 show databases; 를 입력한후 엔터키를 누른다.
        show databases는 생성된 데이타베이스의 목록을 보는것이다.

        mysql> show databases;
        +----------+
        | Database |
        +----------+
        | test     |
        | mysql    |
        +----------+
        2 rows in set (0.03 sec)

        mysql>

        보면 데이타베이스 목록에는 test와 mysql이라는 데이타베이스가 있다.
        test는 테스트용으로 만들어놓은 DB인거 같다. 아래와 같은 명령어로 삭제할수 있다.
            
        mysql> drop database test;
        +----------+
        | Database |
        +----------+
        | mysql    |
        +----------+
        1 rows in set (0.01 sec)

        mysql>        

        보면 알겠지만 testDB가 삭제된것을 알수가 있다.
        이제 mysql DB로 접속을 하도록 하자 접속은 use명령을 이용하여 접속할수가 있다.
        또 내용을 수정하기위해 connect로 연결을 하도록 하자.

        
        mysql> use mysql;
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A

        Database changed
        mysql> connect mysql;
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A

        Connection id:    118
        Current database: mysql

        mysql>

        이제 접속이 완료되었다. 이제 테이블의 목록을 보도록 하자.

        mysql> show tables;
        +-----------------+
        | Tables_in_mysql |
        +-----------------+
        | columns_priv    |
        | db              |      <- DB의 내용을 담고 있는 테이블
        | func            |
        | host            |
        | tables_priv     |
        | user            |         <- DB 사용자의 내용을 담고 있는 테이블 (접속을 할때 여기에 있는 아이디와 패스워드로 합니다.)
        +-----------------+
        6 rows in set (0.00 sec)
        
        mysql>      

        먼저 접속유저에 대한 내용을 수정하자. 아무나 콘솔상에서 mysql로 들어와버리면 안되지 않는가..
        우선 user테이블의 내용을 보자.(약간 틀릴수도 있습니다.)

        mysql> select * from user;
        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        | Host      | User    | Password         | Select_priv | Insert_priv | Update_pr
        iv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Proce
        ss_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | S
        how_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_pr
        iv | Repl_slave_priv | Repl_client_priv | ssl_type | ssl_cipher | x509_issuer |
        x509_subject | max_questions | max_updates | max_connections |
        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        | localhost | root    |  패스워드부분      | Y           | Y           | Y
           | Y           | Y           | Y         | Y           | Y             | Y
                | Y         | Y          | Y               | Y          | Y          | Y
                    | Y          | Y                     | Y                | Y
           | Y               | Y                |          |            |             |
                     |             0 |           0 |               0 |
        | localhost | test    |                 | Y           | Y           | Y
           | Y           | Y           | Y         | Y           | Y             | Y
                | Y         | Y          | Y               | Y          | Y          | Y
                    | Y          | Y                     | Y                | Y
           | Y               | Y                |          |            |             |
                     |             0 |           0 |               0 |

        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        2 rows in set (0.00 sec)
        
        mysql>            

        와 무지하게 많다. 3.X.X 보다  필드가 더 추가되었다. 무슨내용인지는 필자도 잘은 모르지만 설명은 하겠다.
        먼저 mysql을 입력하면 그냥접속이 되는걸 알수가 있다. 그이유는 위에처럼 패스워드부분에 패스워드가 없기때문이다
        mysql_install_db를 입력하면 저 내용들이 생기게 된다. 처음설치했는데-- 패스워드 있으면 접속은 어떻게 하겠는가ㅡㅡㅋ

        우선 test 사용자부터 지우자 필요없다-- 그리고 root사용자도 지우자


        mysql> delete from user;

        하면 test와 root사용자가 지워지게 된다.
              
        mysql> select * from user;
        Empty set (0.01 sec)

        mysql>            

        보다시피 모든사용자가 지워졌다. 여기에서 루트사용자 까지 지우는 이유는 mysql을 루트로 돌리게 되면 보안상에
        위험이 있다고들 한다. 그렇기 때문에 mysql이라는 사용자로 DB를 관리하도록 하자.
        mysql이라는 사용자를 추가하자 이사용자는 DB의 모든 부분을 건드릴수가 있다.(대장)
        
        mysql> insert into user values ("localhost","mysql",Password("비밀번호"),"Y","Y","Y","Y
        ","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","","","","
        ","0","0","0");
        Query OK, 1 row affected (0.00 sec)
        
        mysql> select * from user;
        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        | Host      | User    | Password         | Select_priv | Insert_priv | Update_pr
        iv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Proce
        ss_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | S
        how_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_pr
        iv | Repl_slave_priv | Repl_client_priv | ssl_type | ssl_cipher | x509_issuer |
        x509_subject | max_questions | max_updates | max_connections |
        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        | localhost | mysql   |  패스워드부분      | Y           | Y           | Y
           | Y           | Y           | Y         | Y           | Y             | Y
                | Y         | Y          | Y               | Y          | Y          | Y
                    | Y          | Y                     | Y                | Y
           | Y               | Y                |          |            |             |
                     |             0 |           0 |               0 |
        +-----------+---------+------------------+-------------+-------------+----------
        ---+-------------+-------------+-----------+-------------+---------------+------
        --------+-----------+------------+-----------------+------------+------------+--
        ------------+------------+-----------------------+------------------+-----------
        ---+-----------------+------------------+----------+------------+-------------+-
        -------------+---------------+-------------+-----------------+
        2 rows in set (0.00 sec)
        
        mysql>            

        자 이제 mysql권한으로 DB의 모든것을 건들수 있는 사용자가 만들어졌다.
        단, 주의하여야 한다 이제 일반사용자들을 생성할때는 Y 옵션을 모두 N으로 주어야 한다 아래처럼 일반사용자
        계정을 생성하도록 해야한다. 일반사용자에게 DB전체를 건드리는 권한을 주면--;; 하루도 못갈것이다.
    
        mysql> insert into user values ("localhost","아이디",Password("비밀번호"),"N","N","N","N
        ","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","","","","
        ","0","0","0");
        Query OK, 1 row affected (0.00 sec)
        
        mysql>

        이제 db 테이블의 내용을 보도록하자.


        mysql> select * from db;
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        | Host      | Db      | User    | Select_priv | Insert_priv | Update_priv | Dele
        te_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv |
        Alter_priv | Create_tmp_table_priv | Lock_tables_priv |
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        | localhost | test%   | test    | Y           | Y           | Y           | Y
                | Y           | Y         | Y          | Y               | Y          |
        Y          | Y                     | Y                |
        | localhost | test%_% | test%_% | Y           | Y           | Y           | Y
                | Y           | Y         | Y          | Y               | Y          |
        Y          | Y                     | Y                |
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        2 rows in set (0.00 sec)
        
        mysql>    

       db 테이블의 내용을 보면 test% 와 test%_% 라는 DB목록이 있는걸 볼수있다.(다를수도 있음)
       이것은 좀전에 사용자와 DB를 지웠으므로 이것도 모두 지워주도록 하자.

        mysql> delete from db;

        하면 db테이블의 모든 내용이 지워진다.
              
        mysql> select * from db;
        Empty set (0.01 sec)

        mysql>            

        새로운 DB를 추가해보도록 하자.

        mysql> insert into db values ("localhost","DB명","사용자ID","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");


        그러면 db 테이블에는 다음과 같은 내용이 있을 것이다.
        mysql> select * from db;
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        | Host      | Db      | User    | Select_priv | Insert_priv | Update_priv | Dele
        te_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv |
        Alter_priv | Create_tmp_table_priv | Lock_tables_priv |
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        | localhost | DB명    | 사용자ID  | Y           | Y           | Y           | Y
                | Y           | Y         | Y          | Y               | Y          |
        Y          | Y                     | Y                |
        +-----------+---------+---------+-------------+-------------+-------------+-----
        --------+-------------+-----------+------------+-----------------+------------+-
        -----------+-----------------------+------------------+
        1 rows in set (0.00 sec)
        
        mysql>  

        db 테이블에 사용될 db에 관한 정보를 추가하였다면 db를 추가하도록 하자
        
        mysql> create database DB명;
        Query OK, 1 row affected (0.00 sec)
        
        mysql> show databases;
        +----------+
        | Database |
        +----------+
        |   DB명   |
        |  mysql   |
        +----------+
        1 rows in set (0.00 sec)
        
        mysql>      

        드디어 되었다. DB를 추가하고 show databases;를 해보니 추가된것을 확인할수가 있다.
        이렇게 하였다고 다된것은 아니다
        mysql테이블의 내용이 변경되었다면 업데이트를 해줘야 한다.
        
        mysql> flush privileges;
        
        이렇게 하면 mysql이 업데이트 되게 된다.
        
        이제 exit나 quit로 콘솔로 빠져나가도록하자.

        이제 다음부터 콘솔상에서 mysql 만 입력하거나 mysql -u 아무거나 입력해도 절대 로그인이 되지 않는다.

        [admin@localhost ~]$ mysql
        ERROR 1045: Access denied for user: 'admin@localhost' (Using password: NO)
        [admin@localhost ~]$ mysql -u aksfhsdkhfsadl
        ERROR 1045: Access denied for user: 'aksfhsdkhfsadl@localhost' (Using password:NO)
        [admin@localhost ~]$

        ^^ 앞으로 일반계정으로 들어오는 사람들은 mysql -p DB명으로 로그인 할수가 있다. 사용자를 지정하고 로그인하려면
        mysql -u 사용자id -p DB명
        하면 된다.

        이해 하셨는지???? 이해가 안되었다면 http://nop.codns.com 의 Q&A 란에 질문하기 바란다.

        자 이제 mysql설치가 끝났다.
        다음은 Apache웹서버를 설치할 것이다. NOP_0x90 Document No.3문서를 참고하기 바란다.

제목 글쓴이 날짜
[동영상] iis 5.1 + PHP 4.3.2 + MySQL 4.0.13 + 제로보드 4.1 pl4 설치 [48] 비행소년™ 2003.08.25
Windows 2000의 NAT를 이용한 인터넷 공유 서버 구축 [2] 굿스피드 2003.08.20
/home에 있는 계정을 계정별로 따로 백업하는 스크립트 [2] 뽀뽀팅이 2003.08.15
Windows2000 Ad Server 계열쓰시는분들의 보안. [7] 씨파개 2003.08.12
긴급 - mysql 설치때 주의점(window xp 에서) [3] 이성헌 2003.08.11
리눅스 환경에서 APM+Tomcat의 개발환경 만들기 굿스피드 2003.08.04
색다른 리눅스 배포판.. [2] Dopesoul 2003.08.02
mysql 다운받기 - 그림설명 [3] 이성헌 2003.07.27
phpzendoptimizer 다운받기 - 그림설명 [7] 이성헌 2003.07.27
php 다운 받기 - 그림설명 [1] 이성헌 2003.07.27
apache 다운받기 - 그림설명 [2] 이성헌 2003.07.27
Windows 2003 엔터프라이즈 에서 FTP 사용하기..(이미지첨부버젼) [10] file 무꾸 2003.07.26
우리호스트 DNS 활용하기 [4] HoYa™ 2003.07.08
NOP_0x90 Document No.4(APM연동 php-4.3.2편) [2] NOP_0x90 2003.07.06
NOP_0x90 Document No.3(APM연동 apache-2.0.46편) NOP_0x90 2003.07.06
NOP_0x90 Document No.2(APM연동 Mysql-DB설정편) NOP_0x90 2003.07.06
NOP_0x90 Document No.1(APM연동 Mysql-4.0.13편) NOP_0x90 2003.07.06
쉘상에서 DB 간단하게 생성하기.. 수정입니다. [1] NOP_0x90 2003.07.05
쉘상에서 사용자 계정과 DB계정 간단하게 생성하기. NOP_0x90 2003.07.05
저만의 보안 방법. (리눅스) [12] Blainfo 2003.07.04