이번에 만들고 있는녀석을 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 케사
TAG MySQL, UTF-8, UTF8

1. 접속방법
./mysql -u root -p[pwd] [databae_name]
passwd:xxxxx

2. 백업& 복구
2.1 특정 부분 데이터베이스만 백업&복구
./mysql -uroot -p[비번] test > test_db.sql 백업
mysql> create database test;
./mysql -u root -p test < test_db.sql 복구(단, test라는 database 생성이 선행되어야함.)

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 케사
TAG MySQL

1>암호 초기화
# killall mysqld (데몬을 죽입니다)

# cd /usr/local/mysql (mysql이 깔린 곳으로 갑니다)

# ./bin/safe_mysqld --skip-grant &

여기까지가 초기화


2>새 암호 넣기
# ./bin/mysql  (sql 실행)

mysql>use mysql

mysql>update user set password=password('새암호') where user='root';
(root 암호 변경합니다. '새암호' 자리에 새암호를 넣으세요
예>update user set password=password('1234') where user='root';

mysql> FLUSH PRIVILEGES
mysql> exit

 

Posted by 케사