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;