본문으로 바로가기

CentOS 5.5 mysql 설치

category 웹/웹.리눅스.SQL 2010. 8. 25. 11:28

yum 을 사용하여 

mysql 
mysql-server 
mysql-connector-odbc 
mysql-devel

파일을 설치합니다. 

# yum -y install mysql mysql-server mysql-connector-odbc mysql-devel



# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

my-huge.cnf 는 메모리가 1-2G 일 경우, 
my-large.cnf 는 512M 일 경우 사용합니다.

# cp /etc/my.cnf /etc/my.cnf.org 로 이름을 바꾸고 파일을 복사합니다.



복사한 my.cnf 파일에서 UTF8 인코딩을 위해 다음을 추가해줍니다. 

[client]
default-character-set = utf8

[mysqld]
init_connect = SET collation_connection = utf8_general_ci
init_connect = SET NAMES utf8
default-character-set = utf8
character-set-server = utf8      # 새 DB 생성시 Character-set 옵션 없을시 기본값
collation-server = utf8_general_ci

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8



DB 파일 위치 
/var/lib/mysql/mysql/


서비스 시작 또는 재기동
/etc/rc.d/init.d/mysqld start     or   /etc/rc.d/init.d/mysqld restart
or
service mysqld start     or    service mysqld restart


mysql 접속 및 문자셋 확인
$ mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.77-log Source distribution

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

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               | 10                                       |
+--------------------------+----------------------------+
14 rows in set (0.01 sec)

mysql> use mysq;
Database changed
mysql> 


my.cnf환경설정을 바꾸어 주지 않으면 다음과 같이 출력된다. 
+--------------------------+----------------------------+
| Variable_name                  | Value                                |
+--------------------------+----------------------------+
| character_set_client           | latin1                                 |
| character_set_connection   | latin1                                 |
| character_set_database      | latin1                                |
| character_set_filesystem    | binary                               |
| character_set_results         | latin1                                |
| character_set_server          | latin1                                |
| character_set_system        | utf8                                   |
| character_sets_dir             | /usr/share/mysql/charsets/ |
| collation_connection          | latin1_swedish_ci                |
| collation_database             | latin1_swedish_ci               |
| collation_server                 | latin1_swedish_ci               |
| completion_type                | 0                                      |
| concurrent_insert               | 1                                      |
| connect_timeout                | 10                                     |
+--------------------------+----------------------------+


root 암호 초기화
mysql> USE mysql;
mysql> UPDATE user SET password=password('new_password') WHERE user='kella';
mysql> FLUSH privileges;

또는 
/usr/bin/mysqladmin -u root password 'new-password'


데이터베이스 선택 및 보기
mysql> USE mysql;
mysql> SELECT Host, User, Password FROM user;


사용자 추가
- 중요 외부에서 접속할 경우 이를 위해 사용자에 해당하는 도메인을 등록해야합니다.
- 서버 주소의 경우 localhost, %, 127.0.0.1 도 같이 처리해 줍니다. 
- 외부 접속은 'localhost'  대신에 '%' 를 사용합니다. 

mysql> INSERT INTO user (Host, User, Password) VALUES ('localhost', '유저명', password('유저패스워드'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('127.0.0.1', '유저명', password('유저패스워드'));
mysql> INSERT INTO user (Host, User, Password) VALUES ('%', '유저명', password('유저패스워드'));
mysql> FLUSH privileges;


사용자 삭제
mysql> DELETE FROM user WHERE user='root'  and host='%';


데이터베이스 추가 및 권한 주기
- 모든 권한시 데이터베이스명.* 대신 *.* 로 처리합니다. 

mysql> CREATE DATABASE 데이터베이스명;
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@localhost IDENTIFIED BY '유저패스워드';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@127.0.0.1 IDENTIFIED BY '유저패스워드';
mysql> GRANT ALL privileges ON 데이터베이스명.* TO 유저명@'%' IDENTIFIED BY '유저패스워드';

외부접속을 위해 host 로 % 문자를 사용합니다. 
간혹 구문중 % 를 잘못 입력하거나 패스워드를 유저 패스워드가 아닌 root 패스워드를 입력하기도 합니다. 
이 경우 % 를 다시 바꿔주면 됩니다.

mysql> UPDATE INTO user SET Host='%' WHERE user='유저명';
mysql> FLUSH privileges;

이렇게 해주면 외부입력 처리가 됩니다. 


외부입력시 특정사용자(sundal)에게 모든 권한 주기
mysql> grant all privileges on *.* to sundal@"%" identified by 'sundal' with grant option;


mysql 테이블 명 변경
rename table 원래 테이블명 to 바꿀테이블명;
alter table 테이블명 rename 바꿀테이블명;

1.원래 있던 테이블을 이름만 바꿔서 새로 만들고 싶을때
create table 새테이블명 select * from 원본테이블명

2.테이블 스키마가 같은 경우 데이터 복사할때
insert into tableA select * from tableB

3.테이블이 다른 곳에 복사
create table tableA.fld as select from tableB.fld
create table project.zipcode as select from exam.zipcode;