프로그램/Mysql2014. 10. 23. 23:59
MySQL원격접속

얼마전 MySQL원격 접속 하는데 있어서 경험을 많이 했습니다. ㅡㅜ

역시 모르는게 죄일까요?

그럼, 경험해서 얻은 내용을 적어 보도록 하겠습니다.

저희 환경은 이렇습니다.

데스크탑:192.168.25.4

노트북:192.168.25.5

둘다 MySQL5.1버전이 깔려 있습니다.

먼저....전 그냥 접속하면 다되는줄 알았습니다.

이렇게....

capture.png

그런데 위와 같이 영어는 잘모르지만 어쨌든 접속이 안되는.....

그래서 검색을 해봤습니다.

[참고출처] - http://www.bbong.net/216

이런저런 내용이 있었고 내용을 종합해 본 결과 mysql의 host, db, user테이블의 정보를 저장 해야 하더라구요...

capture02.png

뭘 어떻게 저장해야되나 테이블 정보를 한번 보겠습니다.

mysql> show columns from db;

capture03.png

mysql> show columns from host;

capture04.png

mysql> show columns from user;

capture05.png

빨간색 네모로 표시된 부분을 보시면 좀 감이 오시죠?

모르셔도 뭔가 연관성은 있겠다고 느낌이 오십니까?

안오시면 별수 없고.....ㅋ

외부에서 접속할려면 접속권한이 필요한것 같습니다.

먼저 user테이블의 Host, User, Password이부분은 접속할수 있는 호스트와 유저 및 패스워드를 저장하는 곳입니다.

그다음 host테이블 Host, Db여기는 호스트 정보와 그 호스트가 접속할수 있는 Db를 지정하는 곳입니다.

마지막으로 db테이블 이곳엔 host, user, db컬럼이 있습니다. db에 접속할수 있는 호스트, 유저, db를 저장하는곳입니다.

그렇다면, 외부에서 접속 할수 있게 할려면 어떻하면 될까요?

그렇습니다. 데이터를 넣어주면 됩니다...어떻게....잘......^^;

만사가 다 귀찮다 난 그냥 접속만 할 수 있게만 해주면 된다....싶으면, 아래 내용을 그대로 넣어 주시면 됩니다.

(제가 그랬거든요... 일단접속하고...안되면 그다음에 또 삽질해야죠! 삽질하면 또 올리 겠습니다. ^^;)

mysql>insert into user values('192.168.25.4', 'root',password('패스워드'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',' ',' ',' ',' ',0,0,0,0);

일단 저는 이걸로 접속이 되었습니다.

capture06.png

mysql> show tables;

capture07.png

만약 접속이 잘 안되신다면...방화벽 때문에 접속이 안될수 있습니다.

mysql접속 포트인 3306포트를 방화벽에서 예외처리 해주세요.

방법은 제어판->시스템 및 보안->Windows방화벽->고급 설정->인바운드 규칙을 누르고 왼쪽부분에서 새규칙->포트를 체크 한다음 다음버튼

->특정 로컬 포트에 3306설정하고 다음버튼->연결허용체크한다음 다음버튼->다음 버튼->이름에 MySQL입력하고 마침

이상입니다.

'프로그램 > Mysql' 카테고리의 다른 글

MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2013. 1. 8. 12:53




 테이블을 만들때 변수는 여러 종류가 있습니다.
대부분의 DB manager에서 비슷하게 사용됩니다.
()안에는 변수의 길이가 선언됩니다.
tinyint(), smallint(), mediumint(), int(), integer(), real(), double(), float(), decimal(), numeric(), char(), varchar(), date, time, timestamp, datetime, tinyblob, blob, mediumbolb, longbolb, tinytext, text, mediumtext, enum, set

이상의 datatype이 있습니다.
이중에 대표적으로 많이 사용하는 datatype을 바탕으로 설명을 하면,
int()는 -2147483648 에서 2147483647사이의 정수를 저장합니다.
"unsigned" 옵션과 함께 0부터 4294967295 범위의 정수를 나타낼 수도 있습니다.
float()는 소수를 포함한 실수를 저장합니다.
예를 들면, float(5,2)는 최대 자리수 5자리에 소수이하 2자리를 나타낸다.
varchar(), char()는 둘다 문자열을 저장합니다.
이경우 varchar()은 ()안에 저장된 수자보다 실제 문자열이 적을 때는 메모리 공간을 실제 문자열 길이만큼만 저장됩니다.
date는 날짜에 대한 정보를 저장한다. 기본은 'YYYY-MM-DD' 입니다.
text 와 blob 데이타 타입은 255 - 65535 자의 문자열을 저장할 때 사용됩니다.

이제 주소록 table을 하나 만들어 보겠습니다.

mysql> create table addressbook(
            -> id int not null primary key,
            -> name char(10),
            -> address char(30),
            -> tel char(15)); ( ";"이 있음을 주의하세요.)
Query OK, 0 rows affected (0.05 sec)

mysql> desc addressbook;

Field Type Null Key Default Extra
id int(11)   PRI 0  
name char(10) YES   NULL  
address char(30) YES   NULL  
tel char(15) YES   NULL  

4 rows in set (0.04 sec)

한가지 주의할 것은 sql문이 끝날때는 항상 ";"으로 끝나야 합니다.
위에서 not null 이나 primary key에 대한 것은 sql문을 통해서 관련 내용을 확인할 수 있습니다.
not null은 id란 변수가 항상 값을 가져야 한다는 의미로 쓰이는 것입니다.
primary key란 사람으로 비유하면 주민등록번호라고 할 수 있습니다.
즉 id란 변수로 각각의 데이타를 구분하는 역활을 하게 합니다.



'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2013. 1. 8. 10:33

HeidiSQL 이라는 프로그램이 있다.

MySQL 뿐만 아니라, MS SQL도 지원한다.


MySQL 접속에는 3가지 방식을 지원하는데,

1. TCP/IP

2. Named Pipe

3. SSH Tunnel

방식을 지원한다.


MySQL에서 제공하는 워크벤치보다 상당히 편하다.

단점은, 에러가 자주 발생해 프로그램이 종료된다는 점이다.

그래도 사용하기 편하고, 업무상 워크벤치보다 작업 효율성이 높아 주된 MySQL 관리 프로그램으로 사용하고 있다.


설치시, HeidiSQL만 설치하면 되나, SSH Tunnel 방식을 사용 할 경우에는 Plink라는 프로그램이 필요하다.

SSH 접속시 자주 사용한 터미널 프로그램인 Putty를 알고 있다면 같은 사이트에서 배포하는 Plink도 발견 할 수 있을 것이다.


접속하는 방법은 3가지 방식중에서 1번과 3번만을 설명하겠다. (2번 방법은 사용해 본적이 없다!)



유저 권한 확인

유저의 권한이 내부 호스트에서만 접속이 가능하도록 설정되있는 경우가 있다.

아래처럼 MySQL에 접속하여 확인해 보자




위 그림을 보면 host에 접속 가능한 IP가 있다. 외부에서 접속시 해당 IP나 어디서든 접속이 가능도록 %를 줘야 한다.

여기서는 유저를 추가하고 권한을 주는 방법이다.


유저 추가

create user '유저명'@'접속허용할 IP' identified by '유저비밀번호'; 


유저 권한 추가

grant all privileges on DB명.Table명 to '유저명'@'접속허용할 IP' with grant option; 


만약 접속 허용할 IP가 어느 곳에서도 가능토록 한다면 IP주소 대신 % 를 넣으면 된다. (ex 'user'@'%')

DB명과 테이블명 사이에는 .을 주도록 한다. 만약 모든 DB와 Table접속 권한을 주려면 가각 *값을 주면된다. (ex *.*)

유저명과 IP는 ''로 감싸주도록 한다. 


유저 삭제

drop user '유저명'@'접속허용한 IP'; 




TCP/IP 방식 접속


접속 방법이 간단하다.

MySQL이 있는 IP주소와 MySQL의 ID와 PW, 포트 번호만 올바르게 넣는다면 접속이 된다.




SSH Tunnel 방식 접속


SSH Tunnel 방식은 SSH 접속을 한 후에 MySQL에 접속하게 한다.

보안 접속이 필요한 경우 사용한다.




앞서 말한 것 처럼 SSH Tunnel 방식 사용시 Plink 프로그램이 필요하다.

Plink는 SSH 접속을 도와주는 역할을 한다.

SSH 터널 설정 탭에서 plink.exe 내려받기 링크가 있으므로 프로그램을 다운 받은 뒤에 위치 설정을 해주면 된다.


SSH 설정 탭에있는 ID와 PW은 리눅스의 유저 계정을 의미하므로 리눅스 계정 ID와 PW를 입력하면 된다.

설정 탭은 MySQL의 ID와 PW를 입력해주면 된다.



HeidiSQL 문제점

MySQL에서 제공하는 워크벤치로는 SSH Tunnel 접속이 정상적으로 이루어지지만 HeidiSQL로는 접속이 거부되는 상황이 있다.


1. 클라이언트와 서버가 같은 서버에 있는 경우(단, 서버가 가상OS인 경우만)

2. 서버가 공유기 내부에 존재하는 경우


위 2가지가 현재 확인된 상황이다. 이 상황에서 어떻게 하든지 SSH Tunnel 접속 거부가 일어난다.

아무래도 Plink를 통한 방식에서 문제점이 있는 거 같다. 위 2가지 상황에서 SSH Tunnel 방식이 필요하다면 워크벤치를 사용하면 접속이 원할하게 이루어진다.




간단한 HeidiSQL 사용법


쿼리문 실행

사용할 쿼리를 적은 다음에 쿼리문을 실행시켜보려면 F9 키를 사용하면 된다.



쿼리문을 정리

Ctrl+F8 키를 사용하면 적은 위처럼 적은 쿼리문이 아래처럼 자동으로 정리 된다.



함수 사용 및 함수 도움말

함수 사용시 아래 그림의 빨간 부분을 활용하면 쉽게 함수를 구성 할 수 있다

만약 함수 사용법을 잊은 경우 해당 함수를 오른쪽 선택하여 나오는 메뉴에서 도움말을 통해 쉽게 알 수 있도록 도와준다.






이상 간단한 HeidiSQL 설치 및 사용법이었다.

한글도 지원되고 빠르고, 편하다.

한번 사용해보도록 하자.





'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2011. 7. 21. 10:40

MySQL에 대한 전반적인 사항을 정리한다.
일반적으로 널리 사용되는 관계형 데이터베이스이다.


목차

[숨기기]

설치 가이드

아래 설치 가이드는 Windows Server 2003을 기준으로 작성한 것 입니다. 설치 환경이 틀릴 경우에는 별도의 주석을 달아 주세요.

MYSQL 서버 설치

  • MySQL Community Server가 오픈소스로 무료이므로 이를 다운로드 한다.
  • "Windows MSI Installer (x86)"를 선택하여 다운로드를 시작 한다.
JDK 6.0 다운로드


  • 다운로드한 설치 프로그램(mysql-5.1.34-win32.msi)을 실행한다.


  • Setup Type을 Custom으로 선택한다.
라이선스 확인


  • "Change.." 버튼을 눌러 설치할 디렉토리를 설정 한다.
  • MySQL의 설치 디렉토리와 MySQL의 Data가 저장될 디렉토리를 설정 한다.
설치 디렉토리 확인


  • 등록된 정보를 확인하고 설치한다.
설치


  • MySQL에서 제공하는 기본 정보를 확인한다.
설치 정보


  • MySQL에서 제공하는 기본 정보를 계속 확인한다.
설치 정보


  • "Configure the MySQL Server now"를 체크하여 설치 후 바로 서버 설정을 진행한다.
환경 설정 선택
  • MySQL 서버 환경 설정은 $MYSQL_HOME/bin/MySQLInstanceConfig.exe 파일을 관리자 권한으로 실행하여 설정이 가능 하다.


MySQL 서버 환경 설정

  • MySQL 서버 환경 설정은 $MYSQL_HOME/bin/MySQLInstanceConfig.exe 파일을 관리자 권한으로 실행하여 설정이 가능 하다.


  • MySQL에서 제공하는 정보를 확인한다.
환경 설정


  • "Detailed Configuration"을 선택한다.
상세 설정


  • "Server Machine"을 선택한다.
서버 선택


  • 트랜잭션 처리를 위해 "Transactional Database Only"를 선택한다.
트랜잭션


  • 테이블을 저장할 테이블 스페이스의 위치를 선택한다.
테이블 스페이스


  • "Decision Support (DSS)/OLAP"을 선택한다.
OLAP


  • 사용할 Port를 지정한다. 디폴트로 3306 port를 사용한다.
  • "Add firewall exception for this port" 링크를 선택하여 방화벽에서 3306 포트를 연다.
포트 설정


  • "Best Support For Multilingualism"을 선택하여 다중 언어 지원을 하도록 한다.
언어 설정


  • 윈도우의 서비스로써 등록한다.
서비스


  • MySQL의 root 사용자의 암호를 설정한다.
암호 설정


  • MySQL의 환경 설정을 실행한다.
환경 설정 실행
  • "could not start the service mysql.error 0" 오류가 발생할 경우
  • Windows 레지스트리 편집기(regedit)에서 MySQL 관련 정보를 삭제한 후 재 설치 한다.
  • 이지클린 프로그램 등을 사용하여 레지스트리를 청소하는 것도 좋은 방법 이다.
  • Vista에서 Apply Security Setting에서 보안 오류로 1045번 오류가 발생할 경우
  • MySQL의 root 암호가 재대로 설정이 되지 않았을 경우에 이런 오류가 발생할 수 있으므로, $MYSQL_HOME/bin 폴더에서 "mysqladmin -u root -p password 새_암호" 명령을 실행하여 암호를 설정 한다.
  • 비스타에 MySQL 설치하기에서 MySQLInstanceConfig.exe 파일을 받아 $MYSQL_HOME/bin 에 복사 한다.
  • MySQLInstanceConfig.exe 파일을 관리자 권한으로 실행하여 MySQL의 서버 환경 설정을 완료 한다.


  • MySQL의 환경 설정을 완료한다.
환경 설정 완료


MySQL의 추가 환경 설정

  • MySQL 설치 후 사용하기 위해서 필요한 환경을 설정한다.
    • PATH=d:/OpenBiz/31_application/MySQL5051/bin (기존 PATH에 추가)
  • 다중 언어를 지원하기 위해서 UTF-8 charset을 설정한다.
  • MySQL이 설치된 홈디렉토리에 있는 my-medium.ini 파일을 복사하여 my.ini 파일을 생성한다.
  • my.ini 파일에 아래 사항을 추가 또는 수정한다.
[client]    
default-character-set=utf8  

[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  

[mysqldump]    
default-character-set=utf8

MySQL Tools for 5.0 설치

Linux용 설치 가이드

Ubuntu Server 8.10에서 MySQL을 설치 한다.

  • MySQL 5.1.30 설치
  • Ubuntu에 root로 로그인한다.
apt-get install mysql-server
#--- 중간에 mysql DB의 root 사용자 암호를 물어 보면 입력해 준다.
  • UTF-8 환경 설정
vi /etc/mysql/my.cnf
    [client]    
    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  
    #--- localhost (127.0.0.1)외에서도 접속하려면 아래와 같이 주석 처리 한다.
    ### bind-address = 127.0.0.1

    [mysqldump]    
    default-character-set=utf8

    [mysql]   
    default-character-set=utf8
  • 설치 정보
  • 설치 폴더 : /usr/share/mysql/
  • 환경 폴더 : /etc/mysql/
vi /etc/mysql/my.cnf
  • 데이터 폴더 : /var/lib/mysql
  • 작업 폴더 : /var/lib/mysql
  • 기동 종료 : /etc/init.d/mysql start, stop, restart, reload, status
  • 서비스 확인 : ps -ef | grep mysql
  • 로그 정보 : /var/log/mysql/mysql-slow.log

CentOS용 설치 가이드

MySQL 설치

  • MySQL 현황 확인
yum list | grep mysql               #--- 설치 가능한 package 확인
yum list installed | grep mysql     #--- 설치된 package 확인
#--- CentOS에 root로 로그인 한다.
yum -y install mysql mysql-server mysql-connector-odbc mysql-devel
rpm -qa | grep mysql    #--- mysql 설치 확인
  • mysql의 root 암호 설정
/etc/init.d/mysqld start
mysqladmin -u root password '비밀번호'
  • root 사용자로 mysql에 접속 하기
mysql -uroot -p
    quit
  • 문자셋 설정
MySQL/CentOS에서 UTF-8 설정
  • 부팅시 자동 실행 설정
chkconfig --level 2345 mysqld on
chkconfig --list | grep mysqld
  • 설치 정보
  • 설치 폴더 : /usr/share/mysql/
  • 데이터 폴더 : /var/lib/mysql/
  • 실행 파일 : /usr/bin/
  • 환경 파일 : /etc/my.cnf
  • 기동 종료 : /etc/init.d/mysqld start, stop, restart 또는 service mysqld start, stop, restart
  • 서비스 확인 : ps -ef | grep mysqld | grep -v grep
  • 로그 정보 : /var/log/mysqld.log
  • PID 파일 : /var/run/mysqld/mysqld.pid
  • showinfo_mysql.bash
#!/bin/bash
echo 'MySQL 버전     : MySQL 5.0.77'
echo 'MySQL 문자셋   : UTF-8'
echo '설치 폴더      : /usr/share/mysql/'
echo '데이터 폴더    : /var/lib/mysql/'
echo '환경 파일      : vi /etc/my.cnf'
echo '기동 종료      : service mysqld restart'
echo '서비스 확인    : ps -ef | grep mysqld | grep -v grep'
echo '로그 파일      : tail -f /var/log/mysqld.log'
  • 참고 문헌

phpMyAdmin 설치

  • MySQL을 관리하기 위해 phpMyAdmin을 설치한다.

MySQL Port 변경

  • Port 사용 여부 확인
netstat -an | grep 7306 | grep LISTEN
  • vi /etc/my.cnf
[client]
port=7306

[mysqld]
port=7306
  • service mysqld restart
  • SELinux 보안 설정이 되어 있을 경우
#--- SELinux 보안 설정을 변경할 수 있는 명령어
system-config-securitylevel

#--- 시스템에서 예약되어 사용되는 포트인지 확인
vi /etc/services      
  • SELinux 보안 기능이 설정되어 해당 포트로 start되지 않을 경우
#--- 사용 포트 확인
semanage port -l | grep mysql

#--- 아래 명령을 사용하여 추가 포트 지정
semanage port -a -t mysqld_port_t -p tcp 7306
semanage port -a -t mysqld_port_t -p udp 7306

사용자 가이드

MySQL 시작 및 종료

  • MySQL을 시작/종료하는 방법
"시작" 메뉴에서 "설정" 메뉴를 선택한 후 "제어판"을 선택한다.
"관리 도구"를 더블 클릭한 후 "서비스"를 더블 클릭한다.
시작 종료
MySQL을 선택한 후 오른쪽 마우스를 클릭하여 MySQL을시작하거나 중지(종료)할 수 있다.


  • MySQL 시작 스크립트를 만들어 사용하면 편리 합니다. (start_mysql.cmd)
cd 31_application/MySQL5051/bin
mysqld --console --max_allowed_packet=32M
  • MySQL 종료 스크립트를 만들어 사용하면 편리 합니다. (stop_mysql.cmd)
cd 31_application/MySQL5051/bin
mysqladmin -u root -p shutdown

Foreign 키

  • 참조

관리자 가이드

DB Schema와 사용자 추가 설정

  • MySQL에 TestAppl에서 사용할 Schmea를 등록한다.
  • MySQL Administrator에 root 관리자로 로그인 한다.
  • 좌측 상단 창에서 "Catalogs"를 선택한다.
  • 좌측 하단의 "Schemata" 창에서 우측 마우스를 누른다.
  • "Create New Schema" 메뉴를 선택하여 Schema를 생성한다.
  • Schema 생성화면에서 "Schema name"으로 "testappldb"를 입력한다.
DB Schema 등록


  • MySQL에 TestAppl에서 사용할 사용자를 등록한다.
  • 좌측 상단 창에서 "User Administration"을 선택한다.
  • 좌측 하단의 "Users Accounts" 창에서 우측 마우스를 누른다.
  • "Add new user" 메뉴를 선택하여 사용자를 생성한다.
  • "User Information" 탭에서 "MySQL User"("testappl"), "Password", "Confirm Password" 등을 등록한다.
DB 사용자 등록


  • MySQL에 TestAppl에서 사용할 사용자의 권한을 설정한다.
  • "Schema Privileges" 탭에서 사용자가 사용할 Schema("testappldb")를 선택한다.
  • "Available Privileges"의 모든 권한을 "Assigned Privileges"로 이동한다.
  • "Apply changes" 버튼을 눌려 등록된 정보를 저장한다.
권한 부여


  • MySQL Query Browser에 접속한다.
  • 상단의 "Tools" 메뉴에서 "MySQL Query Browser" 메뉴를 선택한다.
Query Browser 접속


  • 사용자의 MySQL 데이터베이스 접속 정보를 추가한다.
  • 우측의 "Schemata" 탭에서 "mysql"을 더블 클릭하여 선택한다.
  • grant all privileges on testappldb.* to testappl@localhost identified by '암호'; (사용자에게 Schmea에 대한 권한을 추가)
  • flush privileges; (위 명령을 통해 설정한 권한을 데이터베이스에 반영)
  • select host, user, password from user order by user, host; (사용자의 접속 정보 확인)
접속 정보 추가
  • MySQL Query Browser가 아니라 DOS 창에서 접속 정보를 추가하는 방법
mysql -uroot -pxxx mysql
    grant all privileges on testappldb.* 
        to testappl@localhost identified by '암호';
    flush privileges;
    select host, user, password from user order by user, host;
    exit



CentOS에서 DB Schema 추가 설정

#--- useridDB : 데이터베이스명
#--- userid : 데이터베이스의 사용자 아이디
#--- userpassword : userid의 암호
mysql -u root -p
    create database useridDB default character set utf8 collate utf8_general_ci;
    grant all privileges on useridDB.* to userid@localhost identified by 'userpassword';
    quit

백업 및 복구

오픈소스 DBMS중에서 가장 유명한 것은 MySQLPostgreSQL 입니다.
DBMS를 관리할 때 가장 신경을 많이 쓰는 부분이 튜닝과 백업/복구 입니다. 여기서는 MySQL을 각 단위별로 백업과 복구하는 방법을 알아 봅시다.

  • Binary 파일 백업, 전체 DB 백업
  • $MYSQL_HOME/my.ini에서 datadir에 지정된 디렉토리를 통채로 백업한다.
  • Binary 파일 백업, DB 별 백업
  • $MYSQL_HOME/my.ini에서 datadir에 지정된 디렉토리에 데이터베이스별로 폴더가 만들어져 있다.
  • 해당 데이터베이스에 해당하는 폴더를 통째로 백업한다.
  • 저장 방식이 MYISAM가 아니라 INNODB인 경우 인덱스는 별도로 백업을 하여야 한다. (아직 방법은 모름)
  • mysqldump 명령어를 통한 전체 DB 백업 및 복구
  • 백업 : mysqldump --user=root --password=암호 --all-databases > AllDatabaseBackup.sql
  • 복구 : mysql --user=root --password=암호 < AllDatabaseBackup.sql
  • mysqldump 명령어를 통한 DB별 백업 및 복구
  • 백업 : mysqldump --user=아이디 --password=암호 DB명 > DatabaseBackup.sql
  • 복구 : mysql --user=아이디 --password=암호 -D DB명 < DatabaseBackup.sql
  • mysqldump 명령어를 통한 DB별 Table별 백업 및 복구
  • 백업 : mysqldump --user=아이디 --password=암호 DB명 Table명 > DatabaseTableBackup.sql
  • 복구 : mysql --user=아이디 --password=암호 -D DB명 < DatabaseTableBackup.sql

모니터링 및 튜닝

  • 참고 문헌

데이터 등록 오류 in PHP

  • PHP 버전 4.x와 달리 PHP 버전 5.x에서는 숫자 항목에 빈문자열을 등록할 때 오류가 발생한다. 따라서, 숫자 항목에는 반드시 숫자를 등록하여야 한다.
  • MySQL의 $MYSQL_HOME/my.ini 설정 파일의 sql-mode에서 NO_AUTO_CREATE_USER 항목을 제거하면, PHP 프로그램을 수정하지 않더라도 오류가 발생하지 않는다.

외부 접속 권한 설정

  • MySQL Administrator 등에서 접속할 때, 권한이 없는 PC (IP)에서 접속할 경우 접속이 되지 않는다.
  • 오류 메시지
Could not connect to the specified instance.
MySQL Error Number 1130
Host '192.168.0.11' is not allowed to connect to this MySQL server

If you want to check the network connection, please click the Ping button.

외부 접속 권한 설정

  • 다음과 같이 설정하여 해당 IP에서 접속 권한을 부여 한다.
  • MySQL 접속 DB : mysql
  • MySQL 로그인 아이디 : zzuser
  • 접속하는 PC의 IP : 192.168.0.11
  • MySQL 로그인 암호 : zzpassword
mysql -uroot -p
   connect mysql
   grant all privileges on mysql.* to zzuser@192.168.0.11 identified by 'zzpassword';
   update user
      set select_priv = 'Y', 
          insert_priv = 'Y', 
          update_priv = 'Y', 
          delete_priv = 'Y', 
          create_priv = 'Y', 
          drop_priv = 'Y', 
          reload_priv = 'Y', 
          shutdown_priv = 'Y', 
          process_priv = 'Y', 
          file_priv = 'Y', 
          grant_priv = 'Y', 
          references_priv = 'Y', 
          index_priv = 'Y', 
          alter_priv = 'Y', 
          show_db_priv = 'Y', 
          super_priv = 'Y', 
          create_tmp_table_priv = 'Y', 
          lock_tables_priv = 'Y', 
          execute_priv = 'Y', 
          repl_slave_priv = 'Y', 
          repl_client_priv = 'Y', 
          create_view_priv = 'Y', 
          show_view_priv = 'Y', 
          create_routine_priv = 'Y', 
          alter_routine_priv = 'Y', 
          create_user_priv = 'Y'
    where host = '192.168.0.11' and user = 'zzuser';
   commit;
   flush privileges;
   select host, user, password from user order by user, host;
   exit;
  • 권한 설정 후 2분정도 기다려야 실제로 접속할 수 있다.
  • 모든 IP에 대해서 접속 권한을 부여 하는 방법
mysql -uroot -p
   connect mysql
   update user set host='%' where host='127.0.0.1';
   commit;
   grant all privileges on mysql.* to zzuser@'%' identified by 'zzpassword';
   flush privileges;
   select host, user, password from user order by user, host;

1045 오류가 나면서 접속이 되지 않을 경우

  • MySQL을 종료 한다.
service mysqld stop
  • 안전 모드로 접속하여 암호를 새로 설정 한다.
mysqld_safe --skip-grant-tables
mysql -u root
    UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
    FLUSH PRIVILEGES;
    exit;
service mysqld start

MySQL 역공학

  • Table 목록 가져오기
SELECT table_name, table_rows, avg_row_length, table_collation 
  FROM information_schema.`TABLES` T
where table_schema = '테이블명';
  • Table 정보 가져오기
SELECT column_name, column_default, is_nullable, data_type, character_maximum_length,
      numeric_precision, numeric_scale, collation_name
 FROM information_schema.`COLUMNS` C
where table_schema = '스키마명'
  and table_name = '테이블명'
order by ordinal_position;
  • Procedure 정보 보기
#--- Procedure 목록
SHOW PROCEDURE STATUS where db = 'DB_명';
#--- Procedure 소스
SHOW CREATE PROCEDURE DB_명.Procedure_명;

참고 문헌


'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2011. 7. 21. 10:06

 

계정생성과권한 부여

- 새로운 유저를 생성하고 권한 부여

GRANT 권한종류 ON 대상 TO 사용자계정 IDENTIFIED BY 암호 [WITH GRANT OPTION]

 

권한 종류

 

대상

- *.* : 서버의 모든 데이터베이스, 테이블에 대한 접근

- 데이터베이스명.* : 특정 데이터베이스의 모든 내용에 대한 접근

- 데이터베이스명.테이블명 특정테이블에 대한 접근

 

사용자계정

- MYSQL서버에 접속시 지정하는 이름(사용자의 계정과 호스트로 구성)

 

암호

- IDENTIFIED BY 구문을 지정하지 않으면 비밀번호 없이 계정 생성

 

ex) test_id 사용자에게 1234asdf 라는 비밀번호를 설정하고, localhostmysql서버에 접속하여 sampledb라는 데이터베이스의 모든 테이블에 대해 select권한을부여

-> GRANT SELECT ON sampled.* TO test_id@localhost IDENTIFIED BY “1234asdf”;

 

계정 설정후 적용

- 계정 생성 후 변경된 내용을 적용

FLUSH PRIVILEGES;

 

계정 삭제

DROP USER 계정명@호스트;

ex) localhosttest_id라는 계정을 삭제

DROP USER 'test_id'@localhost;


'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2011. 5. 15. 15:45


[출처] Dim 코드|작성자 yrnh2

테이블 목록보기

> show tables;

 

테이블 이름 변경

> alter table 테이블명 rename 변경할테이블명;

 

테이블 삭제

> drop table 테이블명;

 

테이블 구조 확인

> desc 테이블명;

> explain 테이블명;

 

테이블 컬럼(필드) 추가

> alter table 테이블명 add 추가할필드명 타입 조건 first 또는 after 필드명;

ex) alter table test add name varchar(20) after age; // test 테이블에 name 필드를 age뒤에 생성한다.

 

테이블 컬럼(필드) 삭제

> alter table 테이블명 drop 삭제할필드명;

 

데이터 입력

> inset into 테이블명 values('필드값','필드값','필드값');

 

데이터 수정

> update 테이블명 set 수정할필드명='수정할필드값' where 조건필드명='조건데이터값';

ex) where 조건식에 의한 테이터를 지정하지 않을 경우  해당 필드의 수정값이 모든 데이터에 반영되니 주의.

ex) update test set age='35' where name='최민호'; //test 테이블의 name값이 최민호인 데이터의 age 값을 35로 수정한다.

 

데이터 삭제

> delete from 테이블명 where 조건검색필드명='조건검색데이터값';

 

데이터 검색

> select * from 테이블명; // 모든 필드 데이터를 검색

> select 필드명,필드명 from 테이블명; // 지정한 필드의 데이터만 검색

 

데이터 검색 조건

> select * from 테이블명 where 조건;

ex) select * from test where age='35'; // test 테이블에서 age가 35인 데이터를 검색한다.

ex) select * from test where age<'35'

ex) select * from test where age >'25' and age<'35';

ex) select * from test where age='35' and name='최민호' and sex='남';

ex) select * from test where name like '민%'; // '민'으로 시작하는 데이터를 검색

ex) select * from test where name like '%민'; // '민'으로 끝나는 데이터를 검색

ex) select * from test where name like '%민%'; // '민'을 포함하고 있는 데이터를 검색

 

데이터 정렬

> select * from 테이블명 order by 정렬기준필드명

ex) select * from test order by no // no 필드값 기준으로 오름순 정렬

ex) select * from test order by no desc // no 필드값 기준으로 내림순 정렬

 

검색된 데이터의 일부만 가져오기

> select * from 테이블명 기준필드명 asc limit 시작번호,검색할데이터수;

ex) select * from test num asc limit 0,20; // test 테이블에서  num필드 값을 기준으로 첫번째(0)부터 20개의 데이터를 검색한다.

ex) select * from test were age<'35' order by num desc, num asc limit 0,20


-------------------------------------


여러가지 명령정리
mysql> show variables;      서버의 variables(설정사항)출력
mysql> show variables like 'have_inno%'    조건에 맞는 variables만 출력
mysql> show databases;      database목록
mysql> show tables;       현재DB의 테이블목록(temporary table은 출력하지 않음)
mysql> show tables from db명;     지정된 db명이 소유한 테이블목록
mysql> show tables like 'mem%';     조건에 맞는 테이블목록만 출력
mysql> show index from 테이블명;     인덱스 보기
mysql> show columns from 테이블명;     테이블구조(describe 테이블명, explain 테이블명)
mysql> show table status;      현재 DB의 테이블들의 상태(row수,table type,row길이,..)
mysql> show table status from db명;     지정된 DB의 테이블들의 상태(row수,table type,row길이,..)
mysql> show create table 테이블명;     해당 테이블 생성 SQL문 출력
mysql> rename table 테이블1 to 테이블2;    테이블명 변경(ALTER TABLE 테이블1 RENAME TO 테이블2)
mysql> rename table 테이블1 to 테이블2, 테이블3 to 테이블4; rename multiple tables
mysql> rename table db1명.테이블명 to db2명.테이블명;  테이블을 다른 DB로 이동
mysql> alter table 테이블명 add 컬럼명 데이터타입;  컬럼추가
mysql> alter table 테이블명 del 컬럼명;    컬럼제거
mysql> alter table 테이블명 modify 컬럼명 컬럼타입;  컬럼명에 지정된 컬럼타입의 변경
mysql> alter table 테이블명 change old컬럼명 new컬럼명 컬럼타입 컬럼명 변경
mysql> alter table 테이블명 type=innodb;    테이블type변경
mysql> create table 테이블명(..) type=heap min_rows=10000; 10000row를 수용할 수 있을 만큼 메모리할당(heap type이므로)
mysql> select version();      MySQL서버버전 출력
mysql> create table 테이블2 as select * from 테이블1;  테이블1과 동일한 테이블 생성(with 데이터, as는 생략가능)
mysql> create table 테이블2 as select * from 테이블1 where 1=2; 테이블1과 동일한 구조의 테이블 생성(without 데이터, 1=2는 0으로 할수도 있다.)
mysql> insert into 테이블2 select * from 테이블1;   테이블1의 데이터를 테이블2에 insert


'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL INDEX  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2011. 5. 15. 15:22

 

데이터베이스/MYSQL 2010/08/04 12:14


MySQL INDEX

특정 열의 빠른 조회 를 위해서 인덱스를 사용합니다. 하지만 많은 인덱스를 걸어주는 것 보다는 가장 적절하고 효율성 있게 인덱스를 사용하는것이 중요합니다. 인덱스에 대해서 알아보도록 하겠습니다. MySQL 인덱스는 PRIMARY KEY, UNIQUE KEY, INDEX, FULLTEXT 를 지원하고 있습니다. 저장 방식은 B-Tree 로 저장이 됩니다. 우선 B-Tree 에 대해서 간단하게 알아보겠습니다.

B-Tree (출처 : CCL : Wikipedia B Tree)
B-Tree 는 메모리의 저장 공간의 부족과, 저장장치에 효율적으대용량 처리 방식을 위해 고안된 알고리즘입니다. 디스크에서 탐색트리를 구현할때의 발생하는 문제들을 최적으로 해결해줍니다. 검색시 검색키와 타 키들과의 연산을 줄이고 메모리에 올려져 있지 않은 데이터(B-Tree)를 조회하기 위해 로(최소한으로) 접근할 수 있도록 합니다. 검색시는 상당한 효율성이 있고 방식은 이진트리 탐색 방식과 동일한 패턴으로 수행합니다. 하향식으로 검색 대상의 값을 구분 값과 비교하여 자식포인터를 찾아가는 방식으로 진행됩니다. 삽입의 경우에는 디스크에 인덱싱된 내용을 검색하고 그 노드를 비교 하면서 삽입을 함으로 오버해드가 발생하게 됩니다.

INDEX
인덱스는 말 그대로 데이터의 목차를 알려주는 것입니다. 어떤 데이터가 어느 위치에 있는지 알려주어 그 위치에 해당하는 정보를 빠르게 접근 할 수 있도록 하기 위해서 사용됩니다.

인덱스를 사용하는 목적은 아래와 같습니다.
1. 조건과 일치하는 열을 빨리 찾기 위해
2. JOIN 시 다른 테이블의 열을 추출 하기 위해
3. MAX, MIN값을 찾기 위해 사용합니다.


인덱스를 생성할때 가장 효율적인 자료 형은 정수형 자료 입니다. (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 등) 가변적인 크기와 정규화 할 수 없는 데이터 (텍스트 데이터) 등은 인덱스를 생성할때 비효율적으로 동작합니다. 이를 위해 FULLTEXT 인덱스를 사용할 수 있습니다. Fulltext 는 TEXT , BLOB, VARCHAR등 가변적이고 일반적인 인덱싱의 효율성이 떨어지는 부분에서 많은 효과를 가져올 수 있는 형태의 인덱싱입니다. LIKE '%검색어%' 와 비슷하고 빠르게 검색을 할 수 있습니다.

PRIMARY KEY
PRIMARY KEY 는 첫번째 키 즉 중복이 될수 없으며 ROW와 1:1 매칭이 되는 키 입니다. 주로 정수형 필드와 AUTO_INCREMENT 를 함께 사용하여 순차적으로 증가한 값을 사용하게 됩니다. 중요한것은 회원 ID나 정수형이 아닌 필드를 PRIMARY KEY로 이용하는것은 매우 비 효율적인 방식입니다. 이 키는 ROW의 고유성을 유지 시키기 위해 사용이 됩니다.

INDEX
일반적인 인덱스 입니다. 중복이 가능하고 검색을 빠르게 진행하기 위해 사용되는 인덱스 입니다. LIKE검색시 LIKE앞 부분에 와일드 카드 %,? 가 입력될 시는 INDEX를 사용할 수 없습니다.

UE NIQU

PRIMARY KEY 와 동일하게 중복이 안되는 키 입니다. 회원 ID나 , 전화번호등 고유한 정보를 인덱싱 할때 사용됩니다.

FULLTEXT
FULLTEXT 텍스트 필드에 LIKE '%검색문자열%' 과 비슷한 형태의 검색결과를 얻을 수 있고 텍스트에 최적화된 인덱싱 방식입니다. 현재 MySQL에서는 4.1이상 UTF-8형태의 필드에서 검색이 가능합니다.

FOREIGN KEY
데이터 의 참조 무결성을 유지 시키기 위해 사용됩니다. 자세한 내용은 MySQL FOREIGN KEY를 참조하세요.

단일 컬럼 인덱스와 , 다중 컬럼 인덱스
단일 컬럼 인덱스는 하나의 필드에 인덱스를 걸어주는 형태입니다. 예를 들어 회원의 생년월일을 인덱스를 걸어 줄때 하나의 필드에 인덱스를 걸어줍니다. 다중 컬럼 인덱스는 WHERE 조건에서 2개 이상(최대 15개)의 필드를 조합하여 검색을 할때 사용합니다. 첫번째 조건과 이를 만족하는 두번째 조건을 함께 인덱싱을 하여 최상의 결과를 뽑아 내기 위해 사용이 됩니다. 하지만 다중 컬럼 인덱스의 경우에는 단일 컬럼 인덱스 보다 더 비효율적으로 INSERT / UPDATE 를 수행하기 때문에 꼭 필요한 경우만 사용하는게 좋습니다. 그리고 단일 컬럼 인덱스 2개 이상을 사용할때 첫번째 조건과 두번째 조건이 포함관계(AND)일때는 다중 인덱스를 사용하는게 좋습니다. 가급적 인덱싱에 이용되는 필드는 업데이트가 안되는 값이 좋습니다.

INDEX 의 사용방법
인덱스를 실제 테이블에 적용하는 방법입니다. 테이블 설계시(생성) 또는 변경시에 적용이 가능합니다.

DB 테이블 엔진별 사용가능한 인덱스 타입

테이블 엔진별 사용 가능한 인덱스 타입
DB엔진 인덱스 타입
MyISAM BTREE, RTREE
InnoDB BTREE
MEMORY, HEAP HASH, BTREE
NDB HASH, BTREE

view source
print?
01.DROP TABLE IF EXISTS tMember;
02.CREATE TABLE tMember
03.(
04.    seq INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
05.    name CHAR(12) NOT NULL,
06.    tel CHAR(11) NOT NULL,
07.    PRIMARY KEY(`seq`),
08.    INDEX (`name`),
09.    UNIQUE INDEX (tel)
10.)
11.ENGINE = MyISAM;
12.  
13.-- 인덱스를 생성합니다.
14.CREATE INDEX idx_test USING BTREE ON tMember (name, tel);
15.-- 인덱스를 삭제 합니다
16.DROP INDEX idx_test ON tMember;
17.  
18.-- 인덱스를 생성합니다.
19.ALTER TABLE tMember ADD INDEX idx_test (name, tel);
20.-- 인덱스를 삭제합니다.
21.ALTER TABLE tMember DROP INDEX idx_test;

mysql> DESC tMember;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| seq   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | char(12)         | NO   | MUL | NULL    |                |
| tel   | char(11)         | NO   | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

위와 같이 테이블이 생성이 되었습니다. DESC 화면에서 KEY 부분에 PRI , MUL, UNI 라고 되어 있는 부분이 인덱스가 걸린 형태를 보여주는 것입니다. 더욱더 자세한 인덱스의 화면을 보시려면 SHOW INDEX FROM 을 사용하면 됩니다.

mysql> SHOW INDEX FROM tMember;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| tMember |          0 | PRIMARY  |            1 | seq         | A         |           0 |     NULL | NULL   |      | BTREE      |         |
| tMember |          0 | tel      |            1 | tel         | A         |           0 |     NULL | NULL   |      | BTREE      |         |
| tMember |          1 | name     |            1 | name        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)


SHOW INDEX FROM 은 테이블 인덱스 상태를 상세 하게 볼 수 있습니다. 테이블과 Unique여부 그리고 인덱스 타입 , Cardinality 를 볼 수 있습니다. 실제적으로 인덱싱된 내용의 갯수는 Cardinality 로 알아 볼수 있습니다.(블로그 디자인상 가로가 좁아서 2줄로 보이는 군요 ㅋㅋ)

테이블에 데이터는 있으나 Cardinality 가 정상적인 값이 아닌 NULL 이거나 0일때 는 REPAIR TABLE 로 테이블을 재 색인 할 수 있습니다.




[매뉴얼]

CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [index_option] ...

index_col_name:
    col_name [(length)] [ASC | DESC]

index_type:
    USING {BTREE | HASH | RTREE}

index_option:
    KEY_BLOCK_SIZE [=] value
  | index_type
  | WITH PARSER parser_name




Storage Engine Permissible Index Types
MyISAM BTREE, RTREE
InnoDB BTREE
MEMORY/HEAP HASH, BTREE
NDB HASH, BTREE (see note in text)



Examples:

CREATE TABLE lookup (id INT) ENGINE = MEMORY; 
CREATE INDEX id_index USING BTREE ON lookup (id);

http://dev.mysql.com/doc/refman/5.1/en/create-index.html

'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
윈도우 자바개발환경을 위한 Mysql 5 설치방법  (0) 2011.02.25
Posted by wrnly
프로그램/Mysql2011. 2. 25. 01:30

윈도우 자바개발환경을 위한 기본적인 Mysql 5 설치방법입니다.

목차
  1. 데이터베이스 설치
  2. Mysql 환경설정 - 한글개발환경(euckr)일 경우
  3. Mysql 환경설정 - 다국어 개발환경(utf-8)일 경우
1. 데이터베이스 설치
  • 설치 버전 : 5.0.37 (2007.04.10 현재 최신 버전)
  • 다운로드 URL : http://dev.mysql.com/downloads/mysql/5.0.html#win32
  • Without installer (unzip in C:\) : mysql-noinstall-5.0.37-win32.zip (45.6M) 를 선택해서 다운로드 받는다.
    개인 취향이겠지만 필자는 인스톨 버전은 싫어함.
    또한, 필자는 개발환경은 하드드라이브가 C, D로 나눠서 있을 경우 D 드라이브에 설치한다. 가끔씩 윈도우를 재설치 할 경우를 대비해서.
  • mysql-noinstall-5.0.37-win32.zip 를 풀면 mysql-5.0.37-win32 폴더가 생긴다. mysql-5.0.37로 이름변경해서 아래와 같이 설치하자.
  • 설치 예)
    • 설치디렉토리 : D:\dev\mysql-5.0.37
    • 윈도우 시스템환경변수 설정
      • Path : D:\dev\mysql-5.0.37\bin; 추가
    • 윈도우 서비스로 설정
      • 도스프롬프트 : D:\dev\mysql-5.0.37\bin> mysqld --install ( 서비스 제거는 mysqld --remvoe )
      • 제어판 - 관리도구 - 서비스를 통해 Mysql 서비스 시작
    • 도스 프롬프트에서 C:/>mysql -uroot 로 접속되면 설치 성공.
2. Mysql 환경설정 - 한글개발환경(euckr)일 경우
  • my.ini 설정
  • C:\Windows 밑에 my.ini 파일 생성
    1. [mysql]   
    2. default-character-set = euckr  
    3.   
    4. [mysqld]   
    5. character-set-client-handshake=FALSE  
    6. init_connect="SET collation_connection = euckr_korean_ci"  
    7. init_connect="SET NAMES euckr"  
    8. default-character-set = euckr  
    9. character-set-server = euckr  
    10.   
    11. collation-server = euckr_korean_ci  
    12.   
    13. [client]    
    14. default-character-set = euckr  
    15.   
    16. [mysqldump]    
    17. default-character-set = euckr  
  • Mysql Restart
  • root 계정으로 mysql 접속후
  • mysql>status
  • 아래와 같이 나오면 설정 OK.
    1.   
    2. mysql> status   
    3. --------------   
    4. mysql  Ver 14.12 Distrib 5.0.37, for Win32 (ia32)   
    5.   
    6. Connection id:          1   
    7. Current database:   
    8. Current user:           root@localhost   
    9. SSL:                    Not in use   
    10. Using delimiter:        ;   
    11. Server version:         5.0.37-community MySQL Community Edition (GPL)   
    12. Protocol version:       10   
    13. Connection:             localhost via TCP/IP   
    14. Server characterset:    euckr   
    15. Db     characterset:    euckr   
    16. Client characterset:    euckr   
    17. Conn.  characterset:    euckr   
    18. TCP port:               3306   
    19. Uptime:                 10 sec   
    20.   
    21. Threads: 1  Questions: 4  Slow queries: 0  Opens: 12  Flush tables: 1  Open tabl   
    22. es: 6  Queries per second avg: 0.400   
    23. --------------   
    24.   
    25. mysql>  
    26.   
  • root 계정 초기 비밀번호 지정하기
    1. C:>mysql -uroot mysql   
    2.   
    3. mysql>update user set password=password('새비밀번호'where user='root';   
    4. mysql>flush privileges;   
    5. mysql>exit   
    6.   
    7. C:>mysql -uroot -p새비밀번호   
    8.   
  • 데이터베이스 생성 및 사용자 생성
    1.   
    2. C:>mysql -uroot -p비밀번호   
    3.   
    4. mysql>CREATE DATABASE myproject_kr DEFAULT CHARACTER SET euckr COLLATE euckr_korean_ci;    
    5.   
    6. mysql>GRANT ALL PRIVILEGES ON *.* TO 'javamaster'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;   
    7.   
    8. mysql>GRANT ALL PRIVILEGES ON *.* TO 'javamaster'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;    
    9.   
    10. mysql>FLUSH PRIVILEGES;   
    11.   
    12. mysql>exit   
    13.   
    14. C:>mysql -ujavamaster -p1234 myproject_kr   
    15.      
    4라인 : euckr 환경으로 myproject_kr 이라는 데이터베이스 생성
    6라인 : 아이디 javamaster, 비밀번호 1234로 로컬에서만 접속권한이 있는 사용자 생성
    8라인 : 아이디 javamaster, 비밀번호 1234로 원격에서도 접속권한이 있는 사용자 생성
    10라인 : 권한 적용
    14라인 : 새로 생성한 계정으로 접속

3. Mysql 환경설정 - 다국어 개발환경(utf-8)일 경우
  • my.ini 설정
  • C:\Windows 밑에 my.ini 파일 생성
    1. [mysql]   
    2. default-character-set = utf8  
    3.   
    4. [mysqld]   
    5. character-set-client-handshake=FALSE  
    6. init_connect="SET collation_connection = utf8_general_ci"  
    7. init_connect="SET NAMES utf8"  
    8. default-character-set = utf8  
    9. character-set-server = utf8  
    10. collation-server = utf8_general_ci  
    11.   
    12. [client]    
    13. default-character-set = utf8  
    14.   
    15. [mysqldump]    
    16. default-character-set = utf8  
  • Mysql Restart
  • root 계정으로 mysql 접속후
  • mysql>status
  • 아래와 같이 나오면 설정 OK.
    1.   
    2. mysql> status   
    3. --------------   
    4. mysql  Ver 14.12 Distrib 5.0.37, for Win32 (ia32)   
    5.   
    6. Connection id:          1   
    7. Current database:   
    8. Current user:           root@localhost   
    9. SSL:                    Not in use   
    10. Using delimiter:        ;   
    11. Server version:         5.0.37-community MySQL Community Edition (GPL)   
    12. Protocol version:       10   
    13. Connection:             localhost via TCP/IP   
    14. Server characterset:    utf8   
    15. Db     characterset:    utf8   
    16. Client characterset:    utf8   
    17. Conn.  characterset:    utf8   
    18. TCP port:               3306   
    19. Uptime:                 10 sec   
    20.   
    21. Threads: 1  Questions: 4  Slow queries: 0  Opens: 12  Flush tables: 1  Open tabl   
    22. es: 6  Queries per second avg: 0.400   
    23. --------------   
    24.   
    25. mysql>  
    26.   
  • root 계정 초기 비밀번호 지정하기
    1. C:>mysql -uroot mysql   
    2.   
    3. mysql>update user set password=password('새비밀번호'where user='root';   
    4. mysql>flush privileges;   
    5. mysql>exit   
    6.   
    7. C:>mysql -uroot -p새비밀번호   
    8.   
  • 데이터베이스 생성 및 사용자 생성
    1.   
    2. C:>mysql -uroot -p비밀번호   
    3.   
    4. mysql>CREATE DATABASE myproject_utf8 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;    
    5.   
    6. mysql>GRANT ALL PRIVILEGES ON *.* TO 'javamaster'@'localhost' IDENTIFIED BY '1234' WITH GRANT OPTION;   
    7.   
    8. mysql>GRANT ALL PRIVILEGES ON *.* TO 'javamaster'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;    
    9.   
    10. mysql>FLUSH PRIVILEGES;   
    11.   
    12. mysql>exit   
    13.   
    14. C:>mysql -ujavamaster -p1234 myproject_utf8   
    15.   
    16. mysql>set names euckr;   
    17.      
    4라인 : euckr 환경으로 myproject_utf8 이라는 데이터베이스 생성
    6라인 : 아이디 javamaster, 비밀번호 1234로 로컬에서만 접속권한이 있는 사용자 생성
    8라인 : 아이디 javamaster, 비밀번호 1234로 원격에서도 접속권한이 있는 사용자 생성
    10라인 : 권한 적용
    14라인 : 새로 생성한 계정으로 접속
    16라인 : utf8 환경일 경우 도스프롬프트에서 테이블에 한글문자를 등록(insert)하거나 한글을 조회(select)시 깨져보임. set names euckr; 로 설정을 바꾸면 한글이 제대로 보임(Mysql 5일 경우)

'프로그램 > Mysql' 카테고리의 다른 글

MySQL원격접속 방법  (0) 2014.10.23
MySQL과TABLE 생성  (0) 2013.01.08
[MySQL] MySQL 접속, 관리 프로그램  (0) 2013.01.08
Mysql 정리  (0) 2011.07.21
[MySQL] 계정관리(생성,삭제) - GRANT  (0) 2011.07.21
MySQL 명령어  (0) 2011.05.15
MySQL INDEX  (0) 2011.05.15
Posted by wrnly