2009년 12월 22일 화요일

[8051]직렬통신 command mode 흉내내기

■ 프로그램 : 직렬통신 command mode 흉내내기 (Ver. 0.1)
■ 컴파일러 : KEIL uVision3
■ 실행환경 : Proteus 7, AT89C52, UART 19200bps

$NOMOD51
$INCLUDE(AT89S52.INC)

CSEG    AT      0000H

START:
        MOV     SP, #7FH
        CALL    INIT_SERIAL
        CALL    PROMPT

REP:
        CALL    RXDATA
        JMP     REP  

INIT_SERIAL:         
        MOV     TMOD, #20H   ; [GATE|C/T_|M1|M0|GATE|C/T_|M1|M0] #00100000B
                                                   ; 1번 타이머 모드2(8비트 재저장 모드), 보레이트 발생용
        MOV     SCON, #52H     ; [SM0|SM1|SM2|REN|TB8|RB8|TI|RI] #01010010B
                                                   ; 모드1을 사용
        MOV     A, PCON     
        SETB    ACC.7
        MOV     PCON, A      ; [SMOD|-|-|-|GF1|GF0|PD|IDL] SMOD=1
                                                   ; 가속모드 사용
        MOV     TH1, #0FDH     ; 19200bps
        SETB    TR1          ; 타이머1 시작
        RET              

TXDATA:    
        JNB     TI, $                
        CLR     TI           ; TI비트를 0으로 초기화
        MOV     SBUF, A          ; A레지스터에 저장된 데이터를 시리얼 버퍼로 이동
        RET

RXDATA:               
        JNB     RI, $          
        MOV     A, SBUF
        CLR     RI              ; RI비트를 0으로 초기화      
        CJNE    A, #0DH, TXDATA  ; [Enter]키 검사
        CALL    PROMPT
        RET           

PROMPT:
        JNB    TI, $             
        MOV    SBUF, #0AH    ; line feed
        CLR    TI
        JNB    TI, $             
        MOV    SBUF, #0DH    ; carriage return
        CLR    TI                
        JNB    TI, $             
        MOV    SBUF, #3EH    ; '>' 표시
        CLR    TI                
        RET

        END

ASCII Table

2009년 12월 18일 금요일

[8051] 직렬통신 정리

 8051의 직렬통신을 간략하게 정리하면 동기/비동기 및 4가지 모드중 하나를 선택하여 적절한 통신을 하면되는데 다른거 별로 관심없고 모드1, 그러니까 시리얼통신, UART, RS232C, 9600bps 등등 하면 떠오르는 직렬통신을 하기 위한 설정과 기타 관련 정보를 알아본다.

 그런데 왜 비동기라 부르나? 시스템은 클럭을 기준으로 내부통신을 한다. 같은 주파수로 진동을 하니까 모든 얘들이 동기화 되어 통한다고 생각하자. 그러나 시리얼 통신은 시스템 클럭을 사용하지 않기  때문에 서로 진동하지 못하고, 알아듣지 못한다.

■ 4가지 모드 (다른거 관심없다 1번만 기억하자)
. 모드 0 : I/O확장용의 동기식 통신모드
. 모드 1 : 10비트 프레임의 비동기 통신모드, START(1)+DATA(8)+STOP(1)=10비트
. 모드 2 : 11비트 프레임의 비동기 통신모드
. 모드 3 : 11비트 프레임의 비동기 통신모드

■ 직렬통신과 관련있는 레지스터
* SBUF(Serial Port Buffer Register) : 버퍼의 역할을 이해해야 한다. 주거니 받거니...
* SCON(Serial Port Control Register) : 시리얼 포트의 각종 설정
* PCON(Power Control Register) : 가소롭게 2배속 모드가 있다.

■ 어셈코드 셈플
.
.
.
INIT_SERIAL:                      ; 직렬 통신 설정 (직렬 통신을 하기 위해 설정해 주어야 할 것들)
        CLR      ET1               ; 타이머1 interrupt Disable
        MOV     TMOD, #20H   ; [GATE|C/T_|M1|M0|GATE|C/T_|M1|M0] #00100000B, 1번 타이머 모드2(8비트 재저장 모드), 보레이트 발생용   
        MOV     SCON, #52H   ; [SM0|SM1|SM2|REN|TB8|RB8|TI|RI] #01010010B, 모드1을 사용
        MOV     A, PCON        ; PCON의 현재값만 읽어들이고
        SETB    ACC.7           ; 해당비트값만 수정
        MOV     PCON, A        ; [SMOD|-|-|-|GF1|GF0|PD|IDL] SMOD=1, 가속모드 사용
        MOV     TH1, #0FDH    ; 19200bps
        SETB    TR1               ; 타이머1 시작
        RET                          ; 복귀
.
.
.

2009년 12월 16일 수요일

[우분투]root 계정 로그인

터미널을 열고 root계정과 암호를 만들어 줍니다.
$sudo paswd root

2009년 12월 15일 화요일

[8051]시뮬레이터 정리

■ EdSim51 (http://www.edsim51.com/)
 다른 시뮬레이터에 비해 주변 장치들까지 같이 구현한 프로그램으로 완성도나 사용자 편의성이 높은 프로그램입니다.
 자바로 개발되어 여러 플렛폼에서 테스트 할 수 있는 장점이 있고, 특히나 사이트를 살펴보면 프로그램에 구현된 회로도 및 이를 활용한 각종 교육자료가 있어서 공부하는데는 그만입니다.

■ J51 (http://www.viara.cn/en/j51/)
 역시 자바로 개발된 프로그램으로 특징은 EdSim51처럼 몇가지 주변장치 및 UART를 구현하여 직렬통신과 관련된 테스트를 충분히 해볼 수 있습니다.

■ emu51 (http://sourceforge.net/projects/emu51/)
 소스포지에 공개되어 있는 프로그램인데...머 그냥 이런게 있다 그정도...^^

■ TS Controls Emulator 8051 Version 1.00 (http://www.tscontrols.com/ 사이트 없어진거 같네요)
 윈도우용 프로그램으로 위에 열거한 프로그램 처럼 실시간으로 테스트하는 것 보다는 명령어 하나하나 추적하는 식으로 테스트해 볼 수 있는 프로그램입니다. (사이트가 없는 관계로 해당 프로그램 링크합니다.)



■ JSIM-51 (http://top-themen.t-online.de/ 요기도 사이트 없어진거 같네요)
 역시 윈도우용 프로그램으로 한스탭씩 진행해 가면서 테스트해 볼 수 있는 프로그램 입니다. (사이트가 없는 관계로 해당 프로그램 링크합니다.)

AVR Studio 다운로드 주소

등록하는거 구찬타...
http://www.atmel.com/dyn/resources/prod_documents/AvrStudio4Setup.exe
http://www.atmel.com/dyn/resources/prod_documents/AvrStudio417Setup.exe

2009년 12월 11일 금요일

VC++ 6.0 with WTL

WTL이 오픈되면서 8.0버전을 끝으로 MS의 버전업은 끝나고 SF쪽에서 계속 버전업을 하고 있습니다.

아직까지 VC++ 6.0을 많이 쓰고 있고 아직까지 쓰는데 하등 불편한거 없고...쩝~

PC재설치하면서 정리하는김에 VC++6.0지원하는 최종 WTL파일입니다.

윈도우 탐색기 시작 위치 변경

윈도우 탐색기의 시작 위치를 c:\로 설정하려면 탐색기 속성정보를 다음과 같이 수정한다.

%SystemRoot%\explorer.exe /e, /n, c:\


2009년 12월 10일 목요일

vim 설정

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
source $VIMRUNTIME/cscope_maps.vim
behave mswin

if has("gui_running")
    " 초기 VI 시작시 크기 설정 w * h
    au GUIEnter * winsize 135 45

    " 초기 VI 시작 위치 설정
    au GUIEnter * winpos 0 0
    
endif

" 색상 선택
colorscheme darkblue

" 탭간격 조정
set ts=4
set sw=4
set sts=4

set scrolloff=2         " 2줄 이하로는 자동 스크롤 되게 하는 옵션
set nobackup        " 백업 설정하지 않음

" 자동 들여쓰기를 설정합니다.
set ai

" 한글 자동 인식
set encoding=korea
set fileencodings=utf-8,korea

au! BufRead,BufNewFile *.tpl    set filetype=html
au! BufRead,BufNewFile *.phtml    set filetype=html

" 각 파일에 해당하는 문법(Syntax) 적용
syntax on

set diffexpr=MyDiff()
function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

map <F1> v]}zf
map <F2> zo
map <F3> :tabnew <CR>
map <F11> :se enc=korea <CR>
map <F12> :se enc=utf8 <CR>

func! Sts()
    let st=expand("<cword>")
    exe "sts ".st
endfunc
nmap ,st :call Sts()<cr>

func! Tj()
    let st=expand("<cword>")
    exe "tj ".st
endfunc
nmap ,tj :call Tj()<cr>

set csto=0
set cst
set nocsverb

if filereadable("cscope.out")
    cs add cscope.out
endif

set csverb

"==================================
func! Css()
        let css=expand("<cword>")
        new
        exe "cs find s ".css
        if getline(1)==" "
                exe "q!"
        endif
endfunc
nmap ,css :call Css()<cr>
"==================================
func! Csc()
        let csc=expand("<cword>")
        new
        exe "cs find c ".csc
        if getline(1)==" "
                exe "q!"
        endif
endfunc
nmap ,csc :call Csc()<cr>
"==================================
func! Csd()
        let csd=expand("<cword>")
        new
        exe "cs find d ".csd
        if getline(1)==" "
                exe "q!"
        endif
endfunc
nmap ,csd :call Csd()<cr>
"==================================
func! Csg()
        let csg=expand("<cword>")
        new
        exe "cs find g ".csg
        if getline(1)==" "
                exe "q!"
        endif
endfunc
nmap ,csg :call Css()<cr>
"==================================

" cscope 설정
set cscopequickfix=s-,c-,d-,i-,t-,e-

RegManager

가끔 윈도우 탐색기 쓰면서 현재 폴더에서 도스창을 열어 먼가 테스트할때가 있는데 이럴때 커맨드창 열고 다시 해당 위치로 이동하고...귀차니즘 발동하죠~

이럴때 조금 편하게 사용해 보자고 맹글었습니다.

■ 개발환경 : VC++ 6.0 (MFC, XP sp2)


■ Ver 0.1
 - 선택한 위치에서 명령프롬프트 열기
 - 명령프롬프트에서 명령행 자동완성 : 리눅스에서 자주 사용하는 기능이죠~

syslog메시지 받기 설정

■ FreeBSD
/etc/rc.conf에서 다음 추가
syslogd_flags="-n -a *:*"

■ Linux
-r 옵션 으로 syslogd 실행하기
/etc/sysconfig/syslog 파일을 열어 다음과 같이 -r 옵션을 주어 syslogd 실행되도록 합니다.
SYSLOGD_OPTIONS="-m 0 -r"

syslog 재실행
#> service syslog restart


■ 디버깅 메세지 보내는쪽,
/etc/syslog.conf 파일 수정

kern.*                                                                   @server.domain.name
*.info;mail.none;news.none;authpriv.none;cron.none @server.domain.name

2009년 12월 9일 수요일

RISC와 CISC의 개념적 이해

RISC와 CISC에 대해 인터넷에 찾아봤지만 역시나 어렵게 설명해 놨다.
■ CISC (Complex Instruction Set Computer)
■ RISC (Reduced Instruction Set Computer)

사실은 쉽게 설명해 놨는데 내가 기초가 없어서 이해를 못하는 거겠지... ㅡ,.ㅡ

오늘 개념탑재 함 해보자...

예를 들어 엄마가 아들한테 심부름을 시키려고 하는 상황을 두가지로 시나리오를 구성해 보자.

■ RISC
엄마 : 아들 방청소 해~
아들 : 명령 이해하는데 1초, 그리고 잠시...엄마한테 방청소 다했다고 보고

엄마 : 슈퍼가서 두부 사와~
아들 : 명령 이해하는데 1초, 슈퍼가서 두부사러 갔다 온다.

엄마 : 감자 깎아~
아들 : 명령 이해하는데 1초, 감자 깎는다.

■ CISC
엄마 : 아까 시킨거 다시 해!
아들 : 아놔 머부터 시켰는데...??? 엄마가 아까 시킨 명령 5가지 이해하는데 5분

임피던스

임피던스 이해하려고 안돌아가는 머리 굴려가며 이해하고 싶었다...

인터넷으로 이것 저것 검색해봐도 어렵게 설명해 놓은게 대부분이고... 나같이 이해력 떨어지는 사람은 상처받기 쉽상이지... ㅠ.ㅠ

임피던스 쉽게 이해하자 어려운 공식으로 설명을 하고 있지만 별거 아니다.

이상적인 직류 세계에선 다음 공식이 적용되죠. 여기서 중요! 저항(R)값에 한번 눈길한번 주시고...

■ 전압(V) = 전류(I) * 저항(R)

복잡한 교류 세계에선 다음 공식이 적용됩니다.

■ 전압(V) = 전류(I) * 임피던스(Z)

그러니까 임피던스는 교류 세계에서 표현되는 일종의 저항입니다. (저항보다는 부하라는 표현이 더 적절하지만요)

이하 이어지는 임피던스 계산은 머리 아프고 백날봐도 먼소린지 모르므로 패스~

2009년 12월 8일 화요일

윈도우 콘솔 명령어

c:\>wmic process get description,executablepath
현재 실행 중인 프로세스의 리스트를 Windows Instrumentation command-line interface (WMIC)를 사용하여 빠르게 얻는 방법입니다.

2009년 12월 4일 금요일

용어 정리

■ ARM (Advanced RISC Machine) : 임베디드 기기에 많이 사용되는 32-bit RISC 프로세서이다.

■ AVR(Atmel AVR) : ATMEL사가 개발한 8비트 RISC MCU 제품군이다.

■ MCU (Micro Control Unit) : 단일 칩내부에 프로세서, 메모리, 입출력 장치를 갖춘 장치(마이크로 컨트롤러)이다.

■ PIC는 마이크로칩 테크놀러지에서 1990년 부터 출시되고 있는 마이크로컨트롤러 시리즈 이름이다.

■ XScale(엑스스케일) : 인텔 XScale CPU는 핸드헬드 PC에 사용되는 CPU이다.

시간 동기화

rc.conf 파일 수정 후, /etc/netstart

부팅때 마다 시간을 동기화하도록 /etc/rc.conf 파일에 다음과 같이 넣어두고 있으며,

ntpdate_enable=”YES”
ntpdate_flags=”-s time.kriss.re.kr”
ntpdate_program=”ntpdate”

하루에 한번씩 동기화하도록 /etc/crontab 파일에 다음과 같이 넣어두고 있습니다.

7 0 * * *       root    ntpdate -s time.kriss.re.kr

참고로, 시스템으로 들어오는 123번 UDP포트를 필터링하면 동기화가 안될수있습니다.

[SuLinux] 콘솔 해상도 조정

/etc/grub.conf 파일의 커널 옵션 뒤에 vga=숫자 부분 수정

       640x480  800x600  1024x768  1280x1024 
-----+-----------------------------------------
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M | 0x312 0x315 0x318 0x31B

640x480 800x600 1024x768 1280x1024 1600x1200
-----+---------------------------------------------------
256 | 769 771 773 775 796
32k | 784 787 790 793 797
64k | 785 788 791 794 798
16M | 786 789 792 795 799

2009년 12월 3일 목요일

ATX파워 서플라이 활용(PC파워)

주변에 고장난 PC 또는 먼지만 앉아있는 PC가 있다면 파워를 떼서 활용을 해봅시다. 출력이 5V와 12V이므로 AVR이나 ARM 전원으로 GOOD!~

[메인보드 없이 연결]

■ PS_ON# 과 COM단자를 스위치나 전선으로 연결하면 메인보드없이 파워를 켤수있다.


[ATX핀 배열]

■ 위 그림을 보면 알수있듯이 붉은색은 5V, 노란색은 12V 출력을 가진다.
■ 이중 보라색은 +5V Standby로 전원을 연결하면 항시 출력상태를 가진다.

※ 참고
■ PS_ON# or "Power On" is a signal from the motherboard to the power supply. When the line is connected to GND (by the motherboard), the power supply turns on. It is internally pulled up to +5 V inside the power supply.
■ PWR_OK or "Power Good" is an output from the power supply that indicates that its output has stabilized and is ready for use. It remains low for a brief time (100–500 ms) after the PS_ON# signal is pulled low.


2009년 11월 25일 수요일

Visual C++ 2008 Express Editions ResEdit

Visual C++ 2008 Express Editions에는 리소스 에디터가 존재하지 않는다.

그러나 친절한 누군가가 길을 열어주고 있는데...

무료로 쓰라고 내준 VC Express에는 눈씻고 찾아봐도 리소스 위지윅이 없지만 ResEdit라는 프로그램으로 이를 해결할 수 있다.

공식 사이트  http://resedit.net/

 

공개용 일러스트

혹시 모르시는 분들을 위해 비싼 일러스트 프로그램 대용으로 사용할만 하네요.

레퍼런스가 약한게 흠이지만...

공식 사이트 http://www.inkscape.org

 

Repair Filesystem

Repair Filesystem 으로 부팅될 경우 파일이 잠기는데(Readonly로 수정 불가), 이때 / 를 remount 한다.

# mount -o remount,rw /

LVM이 stripe으로 묶여 있을때 해당 LV찾기

# lvs -v --segments
Finding all logical volumes
  LV          VG             Attr         Start    SSize       #Str Type    Stripe   Chunk
  st1          VG0           -wi-a-    0         1.95G        2 striped     512.00K    0
  st1          VG0           -wi-a-   1.95G    1.95G        2 striped     512.00K    0
  LogVol00  VolGroup00 -wi-ao    0         9.34G        1 linear       0            0
  LogVol01  VolGroup00 -wi-ao    0         512.00M     1 linear       0            0

rc.conf

# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.

## -- /etc/rc.conf -------------------------------------
##
## defaultrouter="192.168.0.1"
## hostname="host.domain.com"
## ifconfig_fxp0="inet 192.168.0.3  netmask 255.255.255.0"
## sshd_enable="YES"
## ------------------------------------------------------

## kernel secure
##
#kern_securelevel="2"     ## default `-1'
kern_securelevel_enable="NO"

## quota
##
enable_quotas="NO"     ## turn on quotas on startup (or NO).
check_quotas="NO"    ## Check quotas on startup (or NO).

## basic
##
fsck_y_enable="YES"   ## required
start_vinum="YES"     ## vinum start
sshd_enable="YES"     ## required, override
usbd_enable="NO"
update_motd="NO"
cron_enable="YES"     ## Run the periodic job daemon.
syslogd_enable="YES"     ## Run syslog daemon (or NO).

## NTP server setup
##
ntpdate_enable="YES"
ntpdate_flags="-b time.nuri.net"
#xntpd_enable="YES"   ## no daemon, san2@2005.12.26

## inetd
##
inetd_enable="YES"     ## Run the network daemon dispatcher (YES/NO).
#inetd_flags="-wW"     ## TCP wrapping external(w) and internal(W)
#inetd_flags="-wW -s 1000 -c 200 -C 200 -R 1000"  ## for mail server, see `man inetd'
inetd_flags="-wW -C 60"    ## rc.conf default value.
     ## "max-connections-per-ip-per-minute" parameter.
     ## but, no -C flag to no limit.
## ftpd without inetd
##
## -- /etc/rc.local ----------------------------------------------------
## . /etc/rc.conf
## . /etc/rc.conf.local
## ## run ftpd without inetd
## ##
## if [ X"${ftpd_without_inetd_enable}" = "XYES" ] ; then
##        /usr/libexec/ftpd ${ftpd_without_inetd_args}
## fi
## ---------------------------------------------------------------------
#ftpd_without_inetd_enable="YES"   ## Run the ftpd without inetd
#ftpd_without_inetd_args="-D -4"   ## Flags to ftpd (without inetd)

## sendmail
##
sendmail_enable="NONE"    ## YES | NO | NONE(don't start any sendmail processes)
sendmail_submit_enable="YES"

## postfix
## we use postfix instead of sendmail
## from pkg-message of postfix-current
##
#sendmail_enable="YES"
#sendmail_flags="-bd"
#sendmail_outbound_enable="NO"
#sendmail_submit_enable="NO"
#sendmail_msp_queue_enable="NO"

## amavis/clamav
##
#amavisd_enable="YES"
#clamav_clamd_enable="YES"
#clamav_freshclam_enable="YES"

## firewall
## Packet Filtering Functionality setup
##
#firewall_enable="YES"    ## Set to YES to enable firewall functionality
#firewall_type="/etc/ipfw.conf"   ## Firewall type (see /etc/rc.firewall)
#firewall_flags="-p cpp"    ## preprocessing via cpp
#tcp_drop_synfin="YES"    ## Set to YES to drop TCP packets with SYN+FIN
#     ## NOTE: this violates the TCP specification
#tcp_extensions="YES"
#icmp_drop_redirect="YES"    ## Set to YES to ignore ICMP REDIRECT packets
#icmp_log_redirect="YES"    ## Set to YES to log ICMP REDIRECT packets

## NFS client
##
portmap_enable="YES"
nfs_client_enable="YES"
nfs_client_flags="-n 4"
rpc_statd_enable="YES"

## NFS server
##
#portmap_enable="YES"
#nfs_server_enable="YES"
#rpc_lockd_enable="YES"
#nfs_reserved_port_only="NO"

## NIS server
## http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-nis.html
## http://freebsd.peon.net/tutorials/8/
##
#portmap_enable="YES"
#nis_server_enable="YES"
#nis_ypxfrd_enable="YES"
#nis_yppasswdd_enable="YES"
#nisdomainname="wdb"     ## example

## NIS client
## http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-nis.html
## http://freebsd.peon.net/tutorials/8/
##
#portmap_enable="YES"
#nis_client_enable="YES"
#nis_ypset_enable="NO"   ## this `NO'
#nisdomainname="wdb"     ## example

## snmpd
##
#snmpd_enable="YES"

## for X-window
##
#moused_enable="YES"
#moused_flags=""
#moused_port="/dev/psm0"
#moused_type="auto"

## local services
##
apache_enable="YES"
#lighttpd_enable="YES"
#rsyncd_enable="YES"
#proftpd_enable="YES"     ## see with/whithout inetd ftpd

Update

1. CVS up
// CVS Install
# cd /usr/ports/net/cvsup

# make install clean

// CVSup 실행
# cd /root
# cp /usr/share/examples/cvsup/ports-supfile .
   --> ports-supfile 을 열어 CHANGE_THIS.FreeBSD.org => cvsup.kr.freebsd.org 로 변경
# cvsup -g -L 2 /root/ports-supfile


2. Ports Upgrade
# cd /usr/ports/sysutils/portupgrade
# make install clean
# /usr/local/sbin/pkgdb -F
# /usr/local/sbin/portupgrade -a

[MySQL]Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

가끔 mysql을 수동으로 설치할때 이와같은 에러를 내고 죽는 경우가 있는데 권한과 퍼미션조정을 잘못할 경우에도 발생한다.

* OS : CentOS 5.2
* MySQL : 5.1.38

#Starting MySQL.Manager of pid-file quit without updating fi[FAILED]

mysql 설치 디렉토리 권한과 퍼미션을 확인한다. (mysql유저명으로 할당)
#chown -R root.mysql /usr/local/mysql
#chown -R mysql.mysql /usr/local/mysql/data
#chmod 700 /usr/local/mysql/data

[MySQL] 설치 및 설정

* OS : CentOS 5.2
* MySQL : 5.1.38
# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-extra-charsets=all
# make && make install
# useradd mysql -g daemon -u 60 -M -s /bin/false -c "Mysql Server User" -d /usr/local/mysql
# groupadd mysql
# /usr/local/mysql/bin/mysql_install_db
# chown -R root.mysql /usr/local/mysql
# chown -R mysql.mysql /usr/local/mysql/data
# chmod 700 /usr/local/mysql/data

# /usr/local/mysql/bin/mysqld_safe &
# ./mysql -u root
mysql> use mysql;
mysql> DELETE FROM user WHERE user='';
mysql> DELETE FROM user WHERE user='root' AND host='불필요호스트명';
mysql> UPDATE user SET host='%', password=PASSWORD('암호') WHERE user='root';
mysql> FLUSH PRIVILEGES;

# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --level 3 mysqld on
# chkconfig --list mysqld

# service mysqld start