싸미~*

Mysql) 한글 utf8 설정

.Tech/SQL

참고 ) kinox블로그

 

환경

OS : Ubuntu 7.04 Server

Mysql : 5.0.x

 

설정

1. "/etc/mysql/my.cnf" 에서 다음 부분을 수정한다.

[mysql] 
default-character-set = utf8

[mysqld] 
character-set-client-handshake=FALSE
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

[client]  
default-character-set = utf8

[mysqldump]  
default-character-set = utf8 

 

2. DB 생성

mysql> create DATABASE <dbname> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

신고

MySQL root 패스워드 복구 방법

.Tech/SQL

(머리 한계가 오나보다, 매번 패스워드 읿어버리니..ㅠ.ㅠ)


1. 현재 Mysql 프로세스 죽이기

- mysql 정지

    # /etc/rc.d/init.d/mysqld stop

  강제로 죽이기 >

     # ps -aux | grep mysql

     # kill <해당 ProcessID>

2. Mysqld (Safe) 재시작

# mysqld_safe --user=mysql --skip-grant-tables &

3. Root 패스워드 변경

# mysql> use mysql;

# mysql> update user set password=password('newpassword') where user='root';

# mysql> flush privileges;

4. Mysql 재시작

# mysqladmin -u -root -p shutdown

# /etc/rc.d/init.d/mysqld start &

신고

[스크랩] MySQL 설치하기

.Tech/SQL
출처 : 쌀콩닷컴 (http://ssalkong.com/study/linux/mysql/mysql_install.html)
======================================================================

Mysql 설치

============================================================================================================
소스파일 설치
============================================================================================================
1. 압축 풀기
먼저 업로드한 mysql의 압축을 풀어줍니다. /usr/src 에 소스파일을 받으셨다면 # cd /usr/src에서 풉니다.
# tar xvzf mysql.xxxx
풀으시면 mysql.x.x.xx 폴더가 생깁니다. 생성된 mysql 디렉토리로 들어가서 아래 순서대로 해주면 됩니다.

2. configure(환경설정) - 약 1-2분 소요
# cd /usr/src
# ./configure --prefix=/usr/local/mysql-4.1.10 --localstatedir=/usr/local/mysql-4.1.10/data --with-charset=euckr
-설명 --prefix=/usr/local/mysql-4.1.10 [설명: --prefix는 mysql 이 설치될경로
--localstatedir=/usr/local/mysql-4.1.10/data [설명: 디비경로]
--with-charset=euc_kr [설명]- with-charset 문자셋 지정 euc_kr 한국어 4.1이상은 euckr 입니다.

3. make - 약 5-10분 소요
]# make
래드햇 9.0 설치시 make가 안되고 gcc, cc 같은 에러나는 분들은 설치하실때 개발도구를 선택하지 않아서 c 컴파일러가 설치가되지 않은 경우입니다. 따로 설치해줄수 있지만 다시 설치하시기를 권해드립니다. 리눅스 서버 운영을 제대로 하기 위해선 1000번은 설치 해봐야 하니까요 ^^

4. make install - 약 2-5분 소요
]# make install

5. mysql 사용자 추가
# adduser mysql <- 왜 해주는지 정확히 모름

6. mysql_install_db
설치가 되고 난 후에 /usr/local/mysql로 이동해 보시면 Mysql DB에 필요한 파일들이 생성이 되어 있습니다. 그리고 /usr/local/mysql/bin 디렉토리에 보시면 Mysql 에 필요한 여러가지 실행파일들이 존재합니다. 이들 실행파일들 중 mysql_install_db라는 명령어를 이용하여 data 라는 디렉토리를 생성한 후에 Mysql 관리 DB와 test DB를 data 디렉토리 내에 생성하여 줍니다. bin 디렉토리에서 # ./mysql_install_db 를 하시면 모두 생성됩니다.
여기까지 무난히 잘 설치 될거라 생각됩니다.
# /usr/local/mysql/bin/mysql_install_db

7. data 디렉토리 소유권 변경
data 디렉토리의 소유권을 변경해줍니다. mysql 사용자를 추가하였는데 /usr/local/mysql/data 디렉토리의 소유권이 root로 되어있으면 안됩니다. 소유권을 mysql로 변경해줍니다.
/usr/local/mysql 밑에 data 디렉토리의 권한을 바꾸는것이기 때문에 /usr/local/mysql 로 이동해서 아래 명령을 실행합니다.
# chown -R mysql.mysql data

drwxr-xr-x 12 root root 4096 12월 10 15:12 .
drwxr-xr-x 12 root root 4096 12월 10 14:45 ..
drwxr-xr-x 2 root root 4096 12월 10 14:45 bin
drwx------ 4 mysql mysql 4096 12월 10 15:27 data
drwxr-xr-x 3 root root 4096 12월 10 14:45 include
drwxr-xr-x 2 root root 4096 12월 10 14:45 info
drwxr-xr-x 3 root root 4096 12월 10 14:45 lib
drwxr-xr-x 2 root root 4096 12월 10 14:45 libexec
drwxr-xr-x 3 root root 4096 12월 10 14:45 man
drwxr-xr-x 6 root root 4096 12월 10 14:45 mysql-test
drwxr-xr-x 3 root root 4096 12월 10 14:45 share
drwxr-xr-x 5 root root 4096 12월 10 14:45 sql-bench


8.Mysql 실행 # /usr/local/mysql/bin/mysqld_safe &
Mysql 실행은 /usr/local/mysql/bin 디렉토리에 있는 mysqld_safe 를 위와 같이 백그라운드로 실행을 시키면 됩니다.

----------------------------------------------------------------------------------------------------------
정상적으로 mysql이 실행됐을때
[root@test mysql]# Starting mysqld daemon with databases from /usr/local/mysql/data
이렇게 나오고 #가 안떨어집니다. ctrl + c 합니다. & 를 붙인건 백그라운드로 돌린다는 말입니다.
이제 /usr/local/mysql/bin/mysql 이라고 치면 mysql 에 접속합니다. mysql > 떨어집니다.

# mysqld_safe & <- MySQL 데몬 시작하기 &는 백그라운드로 mysql을 띄운다

<- 프로세스 확인하기
[root@test root]# ps -ax | grep mysqld
1523 ? S 0:00 /bin/sh ./mysqld_safe
1541 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1543 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1544 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1545 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1546 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1547 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1548 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1549 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1550 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
1551 ? S 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/
[root@test root]#

nmap 으로 확인
[root@ssalkong bin]# nmap localhost

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1597 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
25/tcp open smtp
111/tcp open sunrpc
3306/tcp open mysql
mysql 데몬이 떳으면 OK

-----------------------------------------------------------------------------------------------------------
에러 잡기
# /usr/local/mysql/bin/safe_mysqld &
[1] 9822
# bash: /usr/local/mysql/bin/safe_mysqld: No such file or directory
[1]+ Exit 127 /usr/local/mysql/bin/safe_mysqld
위와 같은 에러가 나는 사람도 있을겁니다. 왜 그럴까요? 모든 에러는 영어를 해석하시고 물어보는게 예의입니다.
# bash: /usr/local/mysql/bin/safe_mysqld: No such file or directory 파일이나 디렉토리가 없다.
bin 디렉토리에 가보면 safe_mysqld 라는 파일이 없습니다. 래드햇 7.x 이상부터는 mysqld_safe 로 명령어가 바뀌었습니다. 예전 책이나 예전 문서로 삽질 그만하시구요...

]# /usr/local/mysql/bin/mysqld_safe &
실행후 또한 아래와 같은 에러가 나는 경우가 있습니다.
[root@test bin]# chown: `mysql': 잘못된 사용자
Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/test.sojung.net.pid
041104 17:56:09 mysqld ended

chown: `mysql': 잘못된 사용자
mysql 은 디비가 소유권 그룹이 mysql 로 지정되어 있어야합니다. 그런데 지정할라고하니 mysql 유저가 없어서 "잘못된 사용자" 라는 에라가 나는 것입니다. 어떻게 해야 할까요? 만들어줘야죠... mysql 이라는 이름으로 계정을 하나 만들어 줍니다. 이때 비번은 지정하지 않습니다. mysql 계정만 만드세요! mysql 은 유저가아니라 스템적으로 필요한거라 비번부여도 필요없고의 홈디렉토리도 필요없습니다. # adduser mysql 이렇게만 해주시면 됩니다.
이제 다시한번 [root@test mysql]# /usr/local/mysql/bin/safe_mysqld & 명령어로 mysql 을 실행시켜봅니다.
잘되면 좋은거구요.. 아래와 같은 에러가 나시는분들 보세요..

[root@test bin]# Starting mysqld daemon with databases from /usr/local/mysql/data STOPPING server from pid file /usr/local/mysql/data/test.sojung.net.pid
041104 20:00:41 mysqld ended

여기서 나가려면 zterm 경우 ctrl + c
[1]+ Done /usr/local/mysql/bin/mysqld_safe

[root@test bin]#

실행 안된겁니다. 소유권 문제입니다. chown -R mysql.mysql data 로 소유권을 변경해줍니다. 소유권 변경할때 /usr/local/mysql 폴더에서 해주셔야 합니다. 왜냐? /usr/local/mysql 밑에 data 디렉토리의 권한을 바꾸는것이기 때문에..
이제 # /usr/local/mysql/bin/mysqld_safe & 하면 mysql 이 실행됩니다.
============================================================================================================
RPM 설치
============================================================================================================
MySQL 사이트 => http://www.mysql.com

http://dev.mysql.com/downloads/mysql/4.0.html <== 이곳에서 RPM을 다운받는다.

* Server MySQL-server-4.0.21-0.i386.rpm

* Client programs MySQL-bench-4.0.21-0.i386.rpm

* Benchmark/test suites MySQL-client-4.0.21-0.i386.rpm

* Libraries and header files MySQL-devel-4.0.21-0.i386.rpm

* Dynamic client libraries MySQL-shared-4.0.21-0.i386.rpm

* Embedded server MySQL-embeddes-4.0.21-0.i386.rpm

* Dynamic client libraries MySQL-shared-compat-4.0.21-0.i386.rpm
(including 3.23.x libraries)

다운받은 RPM 소스를 설치하는데 이전버전이나 mysql이 설치되었는지 확인해보자

# rpm -qa | grep MySQL

** 아마 설치된것이 없다면 아무것도 안나올것이며, 설치된 것이 있다면 리스트가 나올것이다.

ex)

[root@localhost src]# rpm -qa | grep MySQL

MySQL-3.23.27-1

MySQL-client-3.23.27-1

MySQL-devel-3.23.27-1

MySQL-shared-3.23.27-1

위 내용처럼 나온다면 이전버전은 지워버리자

# rpm -e MySQL-3.23.27-1

지울때 의존성 때문에 안지워 질 수도 있는데 --nodeps 옵션을 추가하여 무시하고 지우자

# rpm -e --nodeps MySQL-3.23.27-1
.

.

.


모두 지워졌다면 설치를 하자

다운받은 폴더로 이동(자신이 다운받은 곳으로 이동하자)

# cd /root/apm/down

설치

# rpm -Uvh MySQL-server-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-client-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-devel-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-embeddes-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-shared-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-bench-4.0.21-0.i386.rpm

# rpm -Uvh MySQL-shared-compat-4.0.21-0.i386.rpm

MySQL 패키지 설치가 끝났다면 패키지의 정보를 함 봐보자

# rpm -qip MySQL-server-4.0.21-0.i386.rpm
신고

[요약] MySQL 간단한 문법들

.Tech/SQL
1. MySQL에 연결하기
$mysql -u <mysql 계정명> -p

    '-u' : 계정명 받아들이기
    '-p' : 비밀번호를 입력하기

2. DB 생성
    mysql에 접속후..
    가. DB확인
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| sonsy    |
| test        |
+----------+
2 rows in set (0.00 sec)
  
    'sonsy' : 계정 db
    'test'    : MySQL을 배우거나 테스트 목적의 테스트용 DB

    나. DB 생성, 사용, 삭제
       - DB생성
mysql> CREATE DATABASE TEMPDB;    //TEMPDB생성
       - DB사용
mysql> USE TEMPDB;
      - DB삭제
mysql> DROP DATABASE TEMPDB;

3. DB 관리
    가. 테이블 목록 출력
mysql> USE test;    //test DB 선택
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| OUTRUN         |
+----------------+
1 row in set (0.00 sec)

    나. 특정 테이블 구성
mysql> describe OUTRUN;
+-------+----------+------+-----+---------+-------+
| Field  | Type      | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| OUT   | longblob | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)

    다. 테이블 만들기 (예제)
       구성할 테이블 구조을 결정한다.

people

name

char(10) not null

address

test(100)

id

int


       - 기본 테이블 만들기 포맷
CREATE TABLE table_name (
                   column_name1 type [modifiers]
                   [,column_name2 type [modifiers]
)

       - 위 테이블 구조에 맞는 테이블 만들기 예
CREATE TABLE USER (
    USER_ID             BIGINT UNSIGNED NOT NULL PRIMARY KEY,
    USER_NAME       CHAR(10)         NOT NULL,
    LAST_NAME        VARCHAR(30),
    OFFICE               CHAR(2)   NOT NULL DEFAULT 'NY'
);

          다음은 결과 화면이다.
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| OUTRUN         |
| USER           |
+----------------+
2 rows in set (0.00 sec)

mysql> describe USER;
+-----------+---------------------+------+-----+---------+-------+
| Field     | Type                | Null | Key | Default | Extra |
+-----------+---------------------+------+-----+---------+-------+
| USER_ID   | bigint(20) unsigned |      | PRI | 0       |       |
| USER_NAME | varchar(10)         |      |     |         |       |
| LAST_NAME | varchar(30)         | YES  |     | NULL    |       |
| OFFICE    | varchar(2)          |      |     | NY      |       |
+-----------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)


4. 데이터 관리
    1) 삽입
          가. 메소드
mysql> INSERT INTO table_name (column1, column2, ..., columnN)
mysql> VALUES (value1, value2, ...., valueN)
          나. 예제
mysql> INSERT INTO address ( name, address, city, age)
mysql> VALUES ('Yong Ga Ri', '123 Samsung-dong', 'Seoul', 29 )
          다. 작은 따옴표나, 이스케이프 문자는 이스케이프 문자(\)를 앞에 붙임

          라. 다른 Table로부터 데이터 삽입
mysql> INSERT INTO foods (name, fat)
mysql> SELECT food_name, fat_grams FROM recipes

    2) 갱신
          가. 메소드
mysql> UPDATE table_name
mysql> SET column1=value1, column2=value, .... , columnN=valueN
mysql> [WHERE 절]
               WHERE절에서는 갱신할 행을 선택한다. 생략시 모든 행을 갱신한다.

          나. WHERE 절 (예제)
mysql> UPDATE bands
mysql> SET lead_singer = 'Ian Anderson'
mysql> WHERE band_name = 'Jethro Tull'
             band_name 이 'Jechro Tull'인 행에 대해서만 lead_singer 열을 바꾸도록 한다.

    3) 삭제
        가. 메소드
mysql> DELETE FROM table_name [WHERE 절]

mysql> DELETE table1, table2, ... , tableN
mysql> FROM table1, table2, .. , tableN
mysql> [WHERE 절]

5. 질의

mysql> SELECT column1, column2, ... , columnN
mysql> FROM table1, table2, ... , tableN

    1) 연결
       연결은 어떤 테이블에 있는 데이터를 다른 테이블에 있는 데이터와 연관시켜주는 기능으로,
       관계형 데이터베이스의 핵심이라고 할 수 있다.
       가. 예제
mysql> SELECT book.title, author.name
mysql> FROM author, book
mysql> WHERE book.author = author.id

    2) 별칭
       테이블 및 열 이름이 너무 긴 경우, 별칭(alias)를 이용하여 간단하게 바꿀수 있다.
       가. 열 별칭
mysql> SELECT long_field_name_are_annoying As myfield
mysql> FROM table_name
mysql> WHERE myfield = 'Joe'

       나. 테이블 별칭
mysql> SELECT people.names, tests.score
mysql> FROM tests, really_long_people_table_name AS people



    3) 정렬 및 분류

    4) 결과 제한

6. Tip

(출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=12800&sca=DBMS&page=6 )

1. 쿼리 결과 정렬방식

  mysql> use mysql
  mysql> select * form user where user = 'root' ;
  이런식으로 사용했을경우 결과가 좌우로 길게 나와 보기가 불편하다구요?
  그럼 이렇게 사용해보세요.
  mysql> select * from user where user='root' \G
  그럼 세로로 결과를 출력합니다.
  설명) ; 와 \g 는 가로출력 \G 세로 출력입니다.

2. 쿼리 에디터

  길게 입려한 쿼리의 이부분만 고치고 싶은데 수정이 불편한가요?
  mysql > use mysql
  mysql > select * from user where user='root'
  mysql > and host='localhost' and Select_priv = 'Y'
  mysql > and Insert_priv = 'Y' ;
  자 이렇게 길게 쿼리를 날렸는데 이중에 일부분만 수정해야 한다면
  mysql> \e
  그러면 vi 에디터가 실행됩니다. 여기서 적절히 수정하신후 저장후 종료 (:wq) 하시고
  mysql> \G
  ; \g \G 를 넣어주시면 편집한 내용이 실행됩니다.

3. 쿼리 기록
  mysql> tee ./temp.txt  (파일로 저장)

  mysql> notee (해제)

신고