'MySQL'에 해당되는 글 2건

  1. 2006.12.04 서버 셋팅 UTF-8로 만들기 5
  2. 2004.10.10 mysql 복구(전체/부분/테이블)
OS/Server2006. 12. 4. 13:06

이번에 개발 하고 있는 녀석이 UTF-8로 만들다 보니, 몇가지 문제가 있어 서버 설정부터 완전히 UTF-8로 만들고 그 과정을 문서로 남깁니다. 참고로, 이번에 남기는 포스트가 완전 하다고 할 수 없지만 차후 필요성을 위해 남겨둡니다.


모든 파일들은 YUM으로 설치 했으면 따로 이 설정한 부분은 없습니다.

1. 환경
OS: Redhat Fedora core 6
Apache: httpd-2.2.3-5
PHP: php-5.1.6-3.1
MySQL: mysql-5.0.27-1


2. 설정방법 및 순서
1. apache 환경파일 편집 (httpd.conf)
2. php 환경파일 편집 (php.ini)
3. mysql 환경파일 편집 (my.cnf)
4. apache, mysql 서비스 재시작
5. mysql에서 캐릭터셋 확인 및 디비생성
6. php 소스에 한글문자열이 있으면 파일저장할때 UTF-8 파일형식으로 저장

 /etc/httpd/conf/httpd.conf 에서 캐릭터셋 수정
AddDefaultCharset UTF-8

/etc/php.ini 에서 캐릭터셋 수정
;default_charset = "iso-8859-1"
default_charset = "utf-8"

/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

##참고사항##
old_passwords=1 이부분을 그대로 두게되면 mysql 암호화 방식을
구번전처럼 사용한다는 뜻입니다. 즉 16자리 암호화죠.
신버전으로 사용하길 원한다면 저 윗부분을 주석처리 해주세요.
그럼 암호화 방식이 42자리로 늘어 보안에 훨씬 도움이 됩니다.
#old_passwords=1 <-이렇게 주석걸어 두세요~

init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

붉은색 글자가 추가된 내용들이다.

환경변수를 모두 수정후 apache 및 mysql 서비스 재시작
mysql> use test
Database changed

mysql> show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci            |
| collation_database       | utf8_general_ci            |
| collation_server         | utf8_general_ci            |
| completion_type          | 0                          |
| concurrent_insert        | 1                          |
| connect_timeout          | 5                          |
+--------------------------+----------------------------+
14 rows in set (0.00 sec)


* MySql에서 데이터베이스 생성
mysql>CREATE DATABASE 디비명 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

참고로 MySQL 내용을 보면 알겠지만 MySQL-5 버전 부터는 utf-8 이 아닌 utf8로 바뀌었다.
즉 php 언어 같은 부분으로 db선택을 utf8로 하려면 아래와 같이 해야 한다.

@mysql_query("set names utf8");
아마도 mysql 버전이 5가 아니었다면
@mysql_query("set names utf-8"); 로 했을것이다.

mysql 만 utf8이며 php 와 apache 는 기존 그대로utf-8 이다.

Posted by Jake Kim
DBMS/MySQL2004. 10. 10. 18:28

1. 접속방법

# ./mysql -u root -p[pwd] [databae_name] 
# passwd: xxxxxx

2. 백업& 복구
2.1 특정 부분 데이터베이스만 백업&복구

백업
> ./mysql -uroot -p[비번] test > test_db.sql

복구(복구시 database를 만들고 복구해야함)
# mysql> create database test; 
# ./mysql -u root -p test < test_db.sql


2.2 전체 데이터베이스 백업

#mysqldump -u root -p 테이블명 -h 호스트> sql_backup_all.sql로 받았고...
#mysql -u roo -p 테이블명 -h 호스트< sql_backup_all.sql로 복구하려하고있습니다.

옵션 -u 사용자명
-p 패스워드
-h 호스트(localhost 일경우는 생략가능)

2.3 특정 테이블만 백업/복구
backup table table_name to '/path/bakcup';
restore table table_name from '/path/backup';



3. 데이터베이스 구동/종료/확인

./mysqladmin version
./bin/safe_mysqld& 시작
./mysqladmin -u root shutdown 종료
./mysqlshow
./mysqlshow mysql
./mysql -e "select host,db,user from db" mysql

이상 3번은 참고만 하세요. 


Posted by Jake Kim