로그인
아이디
암   호
회원가입   암호분실
проститутки, досуг, индивидуалки, интим http://youdosug.com - проститутки, досуг, индивидуалки, интим
  Home
  끄적끄적
  리눅스
  쇼핑몰
  게임
  아바타샵
  아바타관리자
  HTML 교육 예제1
  HTML 교육 예제2
  테스트페이지


리눅스 Tech 게시판


ADMIN 2021. 05. 09.
 MySQL 4.1 Update From 4.0
  날짜: 2005.10.10. 22:36:58   조회: 447
아래의 문서 원본은 http://annyung.oops.org/?m=white&p=mysql41 에 있습니다.
-------------------------------------------------------

MySQL 4.1 Update From 4.0
이 문서는 mysql 4.0 에서 mysql 4.1 로 업데이트를 위한 문서이다. 이 문서는 다른
배포본에서도 동일하게 적용을 할 수 있다.


이 문서로 발생하는 피해에 대해서는 보증을 하지 않습니다. 꼭 작업 전에 데이터를
백업 하신 후에 시도 하십시오 !!!

4.0.x 에서 업데이트를 하기 전에 mysql database 의 포맷이 ISAM (3.x 에서 만든 것
을 그대로 가져다 사용했을 경우) 이라면, mysql database 의 포맷을 MYISAM 으로 변
경을 해야 한다. ISAM 으로 되어 있는지 확인을 하려면 /var/lib/mysql/mysql 에서
ls *.ISM 을 실행했을 때, 결과가 나온다면 ISAM format 으로 되어 있는 것이다. 만약
ISM 파일이 존재 한다면 업데이트 전에,

shell> mysql_fix_privilege_tables --password=DB패스워드

명령을 실행하여, MyISAM 으로 변경을 한 후에, 다음의 작업을 진행 하도록 한다. 이
명령을 실행할 때 나오는 에러 메세지들은 무시해도 상관이 없다.

!주의!

업데이트 전에 모든 database 의 dump 를 받아 놓으십시오. 업데이트 후에, 해당 데
이터베이스들의 data 를 dump 받은 것으로 다시 넣어 주어야 합니다. 4.1 에서 덤프
를 받으면 field size 가 반으로 줄어 버리기 때문에 꼭 업데이트 전에 덤프를 받아
놓으셔야 합니다.

대충 mysqldump -F -n --add-drop-table DBNAME gt; DBNAME.dump 와 같이 받으면 됩
니다.


1. mysql 4.1 update

4.0 에서 업데이트를 할 경우에는, /etc/my.cnf 를 다른 이름으로 변경한 후에,
하기 바란다. 4.1 의 my.cnf 와 호환이 되지 않기 때문에, rpm 으로 업데이트를
할 경우 /etc/my.cnf 가 업데이트가 되지 않을 수 있기 때문이다. 그러므로, 꼭
이름을 바꾸어 놓고, 업데이트 후에, 새로 만들어진 my.cnf 를 재 설정하여 사용
하여야 한다.

pkgadd -F mysql*

명령으로 간단하게 업데이트가 가능하다. 주의할 것은 * 문자를 사용하기 위해서
는 실행을 하는 current directory 에 mysql 로 시작하는 파일이 있으면 안된다.

안녕이 아닌 배포본에서는 알아서 업데이트를 하도록 한다. 기존의 data 는 그대
로 두면 된다. 다음 섹션에서 migration 을 하는 방법을 제공한다.

업데이트 완료 후에, /etc/my.cnf 의

[client]
password = MYSQL_ROOT_PASSOWRD

설정을 해 놓은 후에, my.cnf 의 퍼미션을 600 으로 설정을 한다. 그리고, system
의 charset 이 EUC-KR 일 경우에는 my.cnf 에

init_connect = 'set names euckr'

설정이 되어 있는지 확인한 후에, 없으면 설정을 하도록 한다. 안녕의 mysql 에는
기본으로 제공을 한다.


2. mysql database migration

업데이트를 완료한 후에, mysql 을 재시작 하면, 에러 로그에 다음과 같은 메세지
를 확인할 수 있다.

[root@work home]# tail -f /var/log/mysql/error.log

050601 1:04:24 [Warning] './mysql/host' had no or invalid character set,
and default character set is multi-byte, so character column sizes
may have changed
050601 1:04:24 [Warning] './mysql/user' had no or invalid character set,
and default character set is multi-byte, so character column sizes
may have changed
050601 1:04:24 [Warning] './mysql/db' had no or invalid character set,
and default character set is multi-byte, so character column sizes
may have changed
050601 1:04:24 [Warning] mysql.user table is not updated to new password
format; Disabling new password usage until mysql_fix_privilege_tables
is run
050601 1:04:24 [Warning] Can't open and lock time zone table: 테이블
'mysql.time_zone_leap_second' 는 존재하지 않습니다. trying to live
without them
050601 1:04:24 [Warning] './mysql/tables_priv' had no or invalid character
set, and default character set is multi-byte, so character column
sizes may have changed
050601 1:04:24 [Warning] './mysql/columns_priv' had no or invalid character
set, and default character set is multi-byte, so character column
sizes may have changed
050601 1:04:24 [Warning] './mysql/func' had no or invalid character set,
and default character set is multi-byte, so character column sizes
may have changed

이 문제를 fix 하기 위하여, mysql 은 mysql_fix_privilege_tables 라는 명령을 제
공한다. mysql 이 실행되어 있는 상태에서 다음의 명령을 실행한다.


[root@work home]# mysql_fix_privilege_tables --password=MYSQL_ROOT_PASSWORD

This script updates all the mysql privilege tables to be usable by
MySQL 4.0 and above.

This is needed if you want to use the new GRANT functions,
CREATE AGGREGATE FUNCTION, or the more secure passwords in 4.1

done

상단과 같이 done 메세지가 나오면 fix 된 것이다.

3. database 의 table 의 charset 문제

아래의 방법을 사용할 수도 있으나, multibyte 를 사용하는 db 의 경우 필드 값이
반으로 줄어 버리는 문제가 있다. 그러므로, 앞서 받아놓은 dump 파일로 데이터를
다시 밀어 넣도록 한다. 밀어 넣는 방법은

mysql db_name < dumpfile

와 같이 할 수 있다.

하단은 그냥 참고로 남겨 놓는다.

-------

4.0 에서 4.1 로 업데이트를 한 후에, 최초의 table 접근 시에 error.log 에 다음
과 같은 에러 메세지를 만나게 된다.

[root@work home]# tail -f /var/log/mysql/error.log

050601 1:04:30 [Warning] './guestbook/oops' had no or invalid character
set, and default character set is multi-byte, so character column
sizes may have changed

위의 로그는 guestbook database 의 oops table 에 관한 로깅이다.

이 메세지는 mysql 4.0 의 모든 테이블들이 latin1 문자셋으로 생성이 되었으나,
4.1 부터는 기본적으로 utf8 로 관리를 하도록 변경이 되어 발생하는 문제이다.

그냥 사용하는데 크게 지장은 없으나, sort 등에는 문제의 소지가 있다. mysql 에
로그인을 하여 다음과 같은 명령으로 fix 할 수 있다.

[root@work home]# mysql guestbook
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.12-log

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

mysql> alter table oops convert to character set utf8

지정할 charset 은 무조건 utf8 로 하면 된다.

만약 table 이 많다면, mysql -e 명령을 이용하여 shell script 를 만들어 처리할
수도 있으며, 또는 php 의 mysql extension 같은 것을 이용해도 무방하다.


4. 암호 문제 해결

mysql 4.1 에서는 grant 또는 password 함수를 사용할 경우 4.0 의 암호 체계와는
다른 방식을 사용한다. 물론 기존 4.0 에서 사용하던 data 의 암호들은 그대로 이
다.

문제의 소지는 4.1 로 업데이트 한 후에 실행되는 grant 의 identified 나 password
함수는 새로운 암호 체계를 사용하기 때문에 php 나 다른 언어의 mysql 관련 라이
브러리의 접속 method 로는 접근이 불가능하게 된다.

그러므로, php 의 경우에는 mysqli extension 과 같이 mysql 4.1 전용 extension
을 사용해야 한다.

만약, mysqli extension 을 사용할 수 없는 경우, 즉 mysql 은 4.1 로 올렸는데,
php 는 mysqli extension 을 제공하지 않는 php4 를 사용해야 하는 경우나, 또는
기존의 프로그램들이 mysql extension 을 사용하고 있고, 수정하기에는 너무 양이
많을 경우에는 my.cnf 에서 identified 나 password 함수를 예전의 방식대로 사용
할 수 있도록 다음의 설정을 제공한다. my.cnf 에 다음의 설정을 추가한다.

old_passwords = 1

이 설정은 grant 문의 identified 나 password 함수를 예전 버전의 방식으로 작동
하도록 한다. 임시로 이렇게 처리를 할수 있으나, 최종적으로는 새로운 암호화 방
식을 사용할 수 있도록 수정을 하는 것이 좋다.

LIST  MODIFY DELETE WRITE REPLY 





전체글 목록 2021. 05. 09.  전체글: 104  방문수: 47167
112 [윈도우] 윈도우에 아파치 설정 2020.10.06.14
111 [TIP] 톰캣 에러 정보 숨기기  2018.04.27.289
108 [리눅스] 서버 시간 변경  2016.08.09.167
107 [MySQL] 깨진 테이블 점검 및 복구  2016.03.14.255
106 [윈도우] 윈도우에 열려 있는 포트 확인 방법  2016.02.25.178
105 [코딩] 브라우저 모드 고정  2016.02.23.172
104 [MySQL] 테이블명 대소문자 구분 안하기  2016.01.27.281
103 [TIP] 윈도우7 익스프롤러 모든 추가 기능 끄고 실행하기  2016.01.25.206
102 [윈도우] 원격에서 윈도우 종료, 재부팅  2015.08.03.286
99 아사프로 프로토 세팅  2014.12.18.212
95 [리눅스] tar 명령어 사용법  2014.03.05.295
94 [리눅스] 서버 시간 설정하기  2014.02.26.311
93 [코딩] 레이어 팝업 띄우기  2013.12.19.499
92 [MySQL] mysql 5.6 디비 계정 추가  2013.11.21.259
91 iptables 방화벽 설정  2013.10.29.259
90 [TIP] 구글 웹폰트 이용하기  2013.10.23.306
89 [엑셀] 견적서에서 숫자로 된 금액을 문자로 변경하는 수식  2012.11.22.295
88 [TIP] 팝업창 링크  2012.09.13.338
87 [PHP] 파일 업로드 사이트 조정  2012.08.10.303
86 [TIP] 쿠키 정보 확인  2012.02.27.287
85 [JAVA SCRIPT] 팝업창에서 오픈한 윈도우로 링크 걸기  2012.02.13.576
81 GybEpmqPpkcXepkbv  2010.11.02.309
97 NZRMrpOFtqfAgDpn  2014.08.26.239
98 gFmtnqUiInCviLeE  2014.08.30.238
80 [MAIL] imap 포트 연결 확인  2010.10.21.337
79 [Tip] iconv를 이용한 파일 타입 변경  2010.10.20.340
77 [MySQL] mySqlDump 옵션  2010.10.06.374
75 [윈도우] 윈도우 PC 종료 명령어  2010.06.29.434
74 도메인 후이즈 서버 리스트  2010.06.11.401
73 [Tip] 도용방지해제 자바스크립트  2010.05.12.385
RELOAD WRITE
1 [2] [3] [4] 





Copyrightⓒ 2002 RUBICON