CentOS 5.2 APM 구축 매뉴얼

 

 

1. APM설치 전 확인사항

APM을 설치 하기 위해서는 gcc와 gcc-c++ 컴파일러가 설치되어 있어야 한다. 추가적으로 설치해도 상관없지만
리눅스를 설치할때 추가적으로 이 라이브러리들을 선택하여 설치하면 수월하게 설치할 수 있다.

 

또한 phpmyadmin을 사용하기 위해서는 libmcrypt가 필요하며 yum으로 설치를 해봤으니 정상적으로 작동을 하지 않는것

같다. libmcrypt를 tar.gz파일을 다운받아 ./configure && make && make install 을 이용하여 설치하자

 

1.1 APM이 설치 되어 있는 확인

[root@kimsr /]# rpm -qa httpd php mysql
- 아무것도 출력되지 않을 경우 설치되지 않은것이며 패키지가 출력될 경우 아래 명령어로 제거하도록 합니다.


1.2 기존에 설치 되어 있는 Apache(httpd), php, mysql를 제거

[root@kimsr /]# yum remove -y httpd php mysql


1.3 라이브러리 및 컴파일 확인

[root@kimsr amp]# rpm -qa gcc* cpp* compat-gcc* flex*
[root@kimsr amp]# rpm -qa libjpeg* libpng* freetype* gd-*


1.4 라이브러리 및 컴파일 설치

[root@kimsr amp]# yum -y install gcc cpp gcc-c++ compat-gcc32-g77 flex
[root@kimsr amp]# yum -y install libjpeg-devel libpng-devel freetype-devel gd-devel


1.5 APM설치 파일 다운 로드

[root@kimsr /]# mkdir /amp
[root@kimsr /]# cd /amp
[root@kimsr amp]# wget http://apache.mirror.cdnetworks.com/httpd/httpd-2.2.10.tar.gz
[root@kimsr amp]# wget http://kr2.php.net/get/php-5.2.8.tar.gz/from/this/mirror
[root@kimsr amp]# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mysql.holywar.net/

 

2. MySQL 설치

[root@kimsr amp]# tar -zxvf mysql-5.1.30.tar.gz
[root@kimsr amp]# useradd -M -s /bin/false mysql
[root@kimsr mysql-5.1.30]# ./configure --prefix=/usr/local/server/mysql --with-charset=utf8 --with-extra-charsets=all
[root@kimsr mysql-5.1.30]# make && install

 

* configure시 아래와 같이 오류가 발생될 경우
checking for termcap functions library... configure: error: No curses/termcap library found

[root@kimsr apm]# yum -y install ncurses-devel


3. Apache 설치
[root@kimsr apm]# tar -zxf httpd-2.2.10.tar.gz
[root@kimsr httpd-2.2.10]# ./configure --prefix=/usr/local/server/apache --enable-mods-shared=alkl --enable-so --enable-rewrite
[root@kimsr httpd-2.2.10]# make && make install


4. PHP 설치
[root@kimsr apm]# tar -zxf php-5.2.7.tar.gz
[root@kimsr apm]# cd php-5.2.7
[root@kimsr php-5.2.7]# ./configure \
--prefix=/usr/local/server/php --with-apxs2=/usr/local/server/apache/bin/apxs \
--with-mysql=/usr/local/server/mysql --with-config-file-path=/usr/local/server/apache/conf \
--disable-debug --enable-safe-mode --enable-track-vars --enable-sockets \
--with-mod_charset --with-charset=utf8 --with-xml --with-language=korean \
--enable-mailparse --enable-calender --enable-sysvsem=yes --enable-sysvshm=yes \
--enable-ftp --enable-magic-quotes --enable-gd-native-ttf --enable-url-includes \
--enable-trans-id --enable-inline-optimization --enable-bcmath \
--with-jpeg --with-png --with-zlib --with-jpeg-dir=/usr --with-png-dir=/usr/lib \

--with-freetype-dir=/usr --with-libxml-dir=/usr --enable-exif --with-gd --with-ttf \

--with-gettext --enable-sigchild --enable-mbstring --with-mcrypt

컴파일 시 error: mcrypt.h not found 오류가 나면

libmcrypt가 정상적으로 설치되지 않은 것이다. libmcrypt.tar.gz 파일을 다운 받아 ./configure && make && make install로 설치

 

컴파일 시 configure: error: xml2-config not found. Please check your libxml2 installation. 오류가 나오면

yum install *-devel 이것도 안되면 아래와 같이 수행

 

libxml2 설치 - XML C 파서(Parser)
다운로드 :
ftp://xmlsoft.org/libxml2/
[root@localhost apm]# tar xvfz libxml2-2.6.16.tar.gz
[root@localhost apm]# cd libxml2-2.6.16
[root@localhost libxml2-2.6.16]# ./configure && make && make install
[root@localhost libxml2-2.6.16]# cd ..

[root@kimsr php-5.2.7]# make && make install


4.1 PHP 환경설정 파일 복사
[root@kimsr php-5.2.7]# cp php.ini-dist /usr/local/server/apache/conf/php.ini


본인도 APM을 설치하기위해 무단한 노력을 한거 같다. 몇번의 실패와 역경을 딛고 설치에 성고하였다.
모두 오류없이 설치할 수 있기를 기원하며 설치방법을 만들어 보았다.

 

이 내용은 어디까지나 설치까지만의 내용을 정리한 것이면 설치 완료 후 세팅해야 하는 사항들이 있다

mysql 기본 DB을 설정하거나 Apache httpd.conf 파일등을 수정해야 한다. 이 부분에 대해서는 추후에 올리는 내용에서

설명하도록 하겠다.

Posted by Finebe
,


금일 아침에 하나의 업무가 떨어졌습니다. 검색에서 대소문자 구분하지 않고 검색되는 것입니다.

테이블의 다른 컬럼은 영향을 주지 않고 한 컬럼에만 대하여 대소문자를 구분하지 않게끔 할려면 어떻게 해야 될까요??

한번 알아보도록 하겠습니다.

모든 "문자" 컬럼(즉, CHAR, VARCHAR,또는 TEXT 타입의 컬럼)은 컬럼 문자 셋과 컬럼 Collation을 가지고 있습니다.

▶옵션 구문

col_name {CHAR | VARCHAR | TEXT} ( col_length)

[CHARACTER SET charset_name] [COLLATE collation_name]




▶예문
create table test
(
       column1 VARCHAR(5) CHARACTER SET euckr COLLATE euckr_bin
);

※ MySQL은 아래와 같은 방식으로 컬럼 문자 셋과 콜레션을 선택합니다.

  1. 만일 CHARACTER SET X와 COLLATE Y를 모두 지정하면, 문자셋은 X가 되고, 콜레션은 Y가 됩니다.
  2. 만일 CHARACTER SET X는 지정을 하고 COLLATE는 지정하지 않으면, 문자셋은 X가 되고 콜레션은 디폴트를 사용하게 된다.
  3. 만일 COLLATE Y는 지정을 하되, CHARACTER SET는 지정하지 않으면, 문자셋은 Y와 관련된 것을 사용하고 콜레션은 Y를 사용하게 된다.
  4. 아무것도 지정하지 않는 경우에는 테이블 문자셋과 콜레션을 사용하게 된다.


 

UTF를 하던 euc-kr 을 하던 Collation의 종류가 크게 2가지로 나뉘게 됩니다.

bin이 붙는 경우와 붙지 않는 경우입니다.

  • bin이 붙는 경우 : 문자를 코드화하여 비교하게 된다. 즉 a와 A는 코드가 다르므로 다른 문자로 인식된다.(예: euckr_bin)
  • bin이 붙지 않는 경우 : 문자 그대로 비교하게 되는데, 대소문자를 가리지 않는다. 즉 a와 A는 동일한 문자이다. (예: euckr_korean_ci)

이 차이점은 매우 중요하며, 정렬과 검색에 바로 적용이 됩니다.


출처: http://blog.tinyfall.net/192

 

'Database > MySQL' 카테고리의 다른 글

[mysql] date, time과 unix_timestamp  (0) 2009.03.10
mysql에서 데이터베이스 추가 및 권한 설정  (1) 2009.03.05
Mysql 사용자 계정 추가하기  (1) 2009.02.26
MySQL 삭제하기  (0) 2009.02.26
Mysql 백업 & 복원  (0) 2009.02.26
Posted by Finebe
,


Mysql 사용자 계정 생성

 

Mysql 처음 사용하는 초보자분들이 혼동하시는 부분이 사용자 계정 생성부분입니다.

 

우선 Mysql 설치하시게 되면 root 계정은 리눅스 계정과 같습니다.

 

1. Mysql 사용자계정 추가

 

우선 간단히 Mysql 계정 생성방법에 대해서 설명드리겠습니다.

 

Mysql DB서버에는 여러 Database가 존재할것이고 또 많은 User가 존재할겁니다.

 

예를 들자면

 

User에는  최상위 유저인  Root , 일반유저인 mis13, test   존재한다고 보고

 

Database에는 Mis13, Testdb, Database가 존재합니다.

 

아래 그림을 보시면 Root는 3개의 DB에 접속할 권한을 모두 가지고 있고

 

mis13 유저는 Mis13이란 DB만, test 유저는 TestDB, Databases 두 DB 접속할 권한이 있습니다.

 

자 그럼 mis13, test의 유저들의 권한을 줘보겠습니다.

 

우선 사용자를 생성하기 위해서 Root 권한으로 Mysql에 접속을 합니다.

 

#> Mysql  -u root -p

Enter Password : ######

 

mis13 이란 유저가 Mis13이란 DB의 권한을 가지게 해보겠습니다. (암호는 mis1313)

 

mysql> GRANT ALL PRIVILEGES ON Mis13.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

 

mysql> flush privileges;

 

작성해주시면 끝... mis13으로 접속을 하시면 Mis13이란 DB만 보이실겁니다.

 

2. 그 밖에 외부에서도 접속하기, 모든 DB권한 주기

 

어떤 DB도 접속 가능하게 권한을 주는것은

mysql> GRANT ALL PRIVILEGES on *.*  to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql> flush privileges;

 

슈퍼유저로 (즉 root 권한으로) 권한을 주는것은

mysql> GRANT ALL PRIVILEGES on  *.*  to mis13@"%" IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql > flush privileges;

 

GRANT 명령어 말고 Mysql DB 안에 User, DB 테이블에 넣는 법도 있지만 초보분이 사용하시기엔

이 방법이 편하실겁니다.

 

3. 모든 권한이 아닌 부분별 골라서 주기

 

예) mis13 이라는 계정이 전체 데이터베이스에 대해서 select, insert, delete, update 권한만 주고 싶을 경우

mysql>GRANT select, insert, delete, update on *.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql> flush privileges;

 

예) mis13 이라는 계정이 Mis13 이라는 데이터베이스에 대해서 select, insert, update 권한만 주고 싶을 경우

mysql>GRANT select, insert, update on Mis13.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql>flush privileges;

 

PS - 함부로 권한을 주진 맙시다.

 

 

'Database > MySQL' 카테고리의 다른 글

[MySQL] 테이블 컬럼의 Collation 변경 및 종류  (0) 2009.05.04
[mysql] date, time과 unix_timestamp  (0) 2009.03.10
Mysql 사용자 계정 추가하기  (1) 2009.02.26
MySQL 삭제하기  (0) 2009.02.26
Mysql 백업 & 복원  (0) 2009.02.26
Posted by Finebe
,



[root@ubuntu ~]# mysql -u root -p

mysql> use mysql;

// 로컬호스트 사용자 등록 [ 컬럼 개수(desc user)만큼 'N' ]
mysql> insert into user values('localhost,'userid',password('userpasswd'),'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);

// 원격접속 사용자 등록 [ 컬럼 개수(desc user)만큼 'N' ]
mysql> insert into user values('해당IP,'userid',password('userpasswd'),'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);

// 사용자 등록 시 'Y' 이면 모든 db에 모든 권한을 다 주는 것임

mysql> insert into db values('localhost', 'dbname', 'userid','Y','Y','Y','Y','Y',...);

mysql> create database dbname;

mysql> flush privileges;

[root@ubuntu ~]# /etc/init.d/mysql restart

'Database > MySQL' 카테고리의 다른 글

[mysql] date, time과 unix_timestamp  (0) 2009.03.10
mysql에서 데이터베이스 추가 및 권한 설정  (1) 2009.03.05
MySQL 삭제하기  (0) 2009.02.26
Mysql 백업 & 복원  (0) 2009.02.26
MySQL 외부 접근이 되지 않을 경우  (1) 2009.02.25
Posted by Finebe
,

MySQL 삭제하기

Database/MySQL 2009. 2. 26. 10:08




1. 프로세스 확인

[root@dbadb root]# ps aux | grep mysql


2. 프로세스 KILL

[root@dbadb root]# kill 29824 29837



3. 프로세스 확인

[root@dbadb root]# ps aux | grep mysql


4. 디렉토리 삭제

[root@dbadb root]# cd /usr/local
[root@dbadb local]# rm -rf mysql

Posted by Finebe
,



데이터 백업 받기
순서

==============================================================
1. 텔넷 접속
2. mysqldump -u [Mysql ID] -p [DM NAME] > [백업할 파일 이름]
3. password input

===============================================================

 

자신의 컴퓨터로 접속할때

===============================================================

telnet localhost 25  <- 보통 포트 번호가 25이다.

===============================================================

 

외부에서 접속할때
===============================================================

telnet Ip Address 25
===============================================================

 

백업...
===============================================================

리눅스 경우
./mysqldump -u root -p testtable1 > testdb_1.sql
---------------------------------------------------------------

윈도우의 경우
c:\mysql\bin>mysqldump -u root -p testtable1 > testdb_1.sql

===============================================================

 

복구

===============================================================

리눅스 경우
---------------------------------------------------------------

[root@khtnhs bin]# mysql -u root -p testdb < testdb_backup.sql
Enter password;

mysql도 백업해줘야 한다.
[root@khtnhs bin]# mysqldump -u root -p mysql > mysql_backup.sql
Enter password:
[root@khtnhs bin]#

===============================================================

Posted by Finebe
,



로컬에서 작업할 때는 몰랐는데 다른 서버에 MySql을 설치하였더니 원격에서 접근이 되지 않는다.

당연하게 방화벽 때문에 그러려니 하고 방화벽 설정에서 MySql port인 3306 포트를 허용 시켰더니

 

SQLyog에서

Error no 1130 

 '아이피주소' XXXXXXX

라는 메시지가 나오면서 접속이 여전히 되지 않는다.

에러메시지라도 잘 나오면 좋은데

SQLyog는 좋긴 헌데 이런 메시지가 깨지는게 좀 불편하다. (한글 패치 없나..? 좀 찾아봐야지...)

 

여하튼 찾아보니 1130 은 mysql error 메시지라는 걸 확인할 수 있었구

 

정상적(?) 인 에러 구문은..

Error no 1130 

 Host '아이피주소' is not allowed to connect to this mysql server 라고 나온다고 한다.

 

흐음 도대체 어느 부분이 SQLyog 에서는 깨져서 나오는걸까?

 

결론은 해당계정에 대하여 외부에서의 접근권한이 허용되지 않아서 나온 문제..

 

[해결방법]

grant all privileges on *.* to 계정@'%' identified by '패스워드' with grant option;

flush privileges;

 

1130 뿐 아니라 1045(28000) 에러인 경우에도 같은 방법으로 해결된다고 한다.

 

ERROR 1045 (28000): Access denied for user 'root'@'ip주소' (using password: YES)  

'Database > MySQL' 카테고리의 다른 글

[mysql] date, time과 unix_timestamp  (0) 2009.03.10
mysql에서 데이터베이스 추가 및 권한 설정  (1) 2009.03.05
Mysql 사용자 계정 추가하기  (1) 2009.02.26
MySQL 삭제하기  (0) 2009.02.26
Mysql 백업 & 복원  (0) 2009.02.26
Posted by Finebe
,