레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시

2009년 6월 22일 월요일

[MYSQL] MYSQL SQL(스크립트) 파일 import 하기

리눅스 쉘에서 id와 pw를 입력하여 mysql을 실행후
내보내기 혹은 dump된 sql파일을 mysql을 실행할 디렉토리에 복사해놓습니다.
굳이 실행할 곳에 복사 안해도 상관은 없습니다만 경로 입력할때 풀경로를 다 입력해주어야합니다.
실행할곳에 복사를 해놓는경우 경로가 필요없이 ./스크립트.sql 이런식으로 입력해주면 간단해져요

mysql> source ./경로/스크립트.sql    실행하면 MSSQL에서 쿼리실행기로 실행한것처럼
실행되면서 쿼리가 실행되어진다.

2009년 6월 18일 목요일

[MYSQL] phpmyadmin 설치 후 오류 해결 방법

[root@vmm geniuskch]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock' (2)

대책을 찾던 중 KLDP에 나온 내용으로 해결.

1. 퍼미션 문제
일반 유저에서
ls -al /var/run/mysqld/mysqld.sock
해서 확인을 해봅니다.

펼쳐두기..

2009년 5월 27일 수요일

[MYSQL] ※ 이미 생성된 테이블에 PK 및 FK 제약조건 추가하기

 

※ 이미 생성된 테이블에 PK 제약조건 추가하기


ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] PRIMARY KEY(컬럼명);


EX) ALTER TABLE product ADD CONSTRAINT product_pdcode_pk PRIMARY KEY(pdcode);

product 라는 테이블에 product_pdcode_pk 라는 이름을 가진 PK 제약조건을 추가한다.


※ 이미 생성된 테이블에 FK 제약조건 추가하기


ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] FOREIGN KEY(컬럼명)

REFERENCES [부모테이블명](PK컬럼명) [ON DELETE CASCADE];


EX)
ALTER TABLE category ADD CONSTRAINT category_pcode_fk FOREIGN KEY(pcode)
REFERENCES product(pdcode) ON DELETE CASCADE;


※ 제약조건의 삭제


ALTER TABLE [테이블명] DROP CONSTRAINT [제약조건이름];


EX) ALTER TABLE product DROP CONSTRAINT product_pcode_fk;

제약조건을 삭제할 경우에는 FK 제약조건부터 먼저 삭제해준다.


※ NOT NULL 제약조건의 추가


ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] CONSTRAINT [제약조건이름]

NOT NULL;


EX) ALTER TABLE product MODIFY pname varchar2(20) CONSTRAINT product_pname_nn

EX) NOT NULL;

[MYSQL] 펌 - Foreign key 예제



 

MySQL foreign key 예제


a_tbl, b_tbl 두개의 테이블이 있다고 하자



 create table a_tbl(

 user_id varchar(10) not null default'',

 user_name varchar(30) not null default'',

 primary key(`user_id`)

 ) engine=innodb;





 create table b_tbl(

 user_id varchar(10) not null,

 user_tel varchar(15) not null,

 primary key(`user_id`),

 constraint fk_user_id       -- 제약조건명 : fk_user_id

 foreign key (`user_id`)     -- 테이블의 필드(user_id)가 foreign key

 references a_tbl(`user_id`) -- 테이블(a_tbl)의 필드(user_id)를 참조 

 on delete cascade           -- 참조키가 삭제되면 foreign key도 삭제

 on update cascade           -- 참조키가 업데이트되면 foreign key도 업데이트

 ) engine=innodb;


 CASCADE : 참조키가 삭제되거나 업데이트 되면 동일하게 foreign key도 동일하게 맞춤.

 RESTRICT : 참조키 변경(삭제 혹은 업데이트)되는 것을 방지함.

 SET NULL : 참조키에 변경(삭제 혹은 업데이트) 되면 foreign key 값을 null 로 저장.

 NO ACTION : 참조키에 변경(삭제 혹은 업데이트) 되어도 아무런 동작을 하지 않음.(foreign key의 이미 없음)


 각 테이블에 데이터 입력를 입력하자.



 insert into a_tbl values('happy','hong gil dong');

 insert into a_tbl values('appleman','lee soon shin');

 insert into a_tbl values('keeper','lee myoung park');


+----------+-----------------+

| user_id  | user_name       |

+----------+-----------------+

| appleman | lee soon shin   |

| happy    | hong gil dong   |

| keeper   | lee myoung park |

+----------+-----------------+

3 rows in set (0.00 sec)





 insert into b_tbl values('happy','010-1234-5678');

 insert into b_tbl values('appleman','011-4321-8765');

 insert into b_tbl values('keeper','016-9876-5432');


+----------+---------------+

| user_id  | user_tel      |

+----------+---------------+

| appleman | 011-4321-8765 |

| happy    | 010-1234-5678 |

| keeper   | 016-9876-5432 |

+----------+---------------+

3 rows in set (0.00 sec)




 각 두테이블을 조인하자.


 mysql> select a.user_id, b.user_id, a.user_name, b.user_tel from a_tbl a join b_tbl b where a.user_id=b.user_id;

+----------+----------+-----------------+---------------+

| user_id  | user_id  | user_name       | user_tel      |

+----------+----------+-----------------+---------------+

| appleman | appleman | lee soon shin   | 011-4321-8765 |

| happy    | happy    | hong gil dong   | 010-1234-5678 |

| keeper   | keeper   | lee myoung park | 016-9876-5432 |

+----------+----------+-----------------+---------------+


참조키를 업데이트한 후에 확인하자.



 mysql> update a_tbl set user_id='sadman' where user_id='happy';

 Query OK, 1 row affected (0.00 sec)

 Rows matched: 1  Changed: 1  Warnings: 0


mysql> select a.user_id, b.user_id, a.user_name, b.user_tel from a_tbl a join b_tbl b where a.user_id=b.user_id;

+----------+----------+-----------------+---------------+

| user_id  | user_id  | user_name       | user_tel      |

+----------+----------+-----------------+---------------+

| appleman | appleman | lee soon shin   | 011-4321-8765 |

| keeper   | keeper   | lee myoung park | 016-9876-5432 |

| sadman   | sadman   | hong gil dong   | 010-1234-5678 |

+----------+----------+-----------------+---------------+

3 rows in set (0.00 sec)


= 출처 =

운영자 : 김두형(www.sunmysql.co.kr)

email : beansoft@nate.com

업데이트 : 20080923

2009년 5월 16일 토요일

[MYSQL] 컬럼 순서 바꾸기



alter table 테이블명 add 컬럼명 type명 after 위치할컬럼명;
이렇게 하면 위치할컬럼명 밑에 컬럼명이 위치됩니다

alter table 테이블명 modify 컬럼명 type명 after 위치할컬럼명;
이것은 기존 컬럼명 위치를 수정할때 쓰는 방식..

2009년 3월 30일 월요일

MYSQL ROOT 패스워드를 변경해보자

1. mysql root 패스워드를 변경해보자(리눅스)


<우선 mysql start 하기>

mysql설치루트/bin>./mysqld_safe &


<mysql 접속하기>

mysql설치루트/bin>./mysql -u root mysql


<password 변경하기>

mysql> use mysql;


mysql> update user set password=password('new-passwd') where user = ('root');


mysql> flush privileges;

(참고 : update문을 사용하여 암호가 바뀌었을땐 flush privileges를 이용하여 사용자 관련 테이블에 알려야 함)


마지막으로 서버 재실행



2. 패스워드 분실시


패스워드 분실시 빠르게 root 패스워드를 변경 해보자


우선 mysql를 stop 한 환경에서 작업을 해야 한다.


<권한 테이블을 사용하지 않겠다고 선언하면서 서버 start>

mysql설치루트/bin> ./mysqld_safe --skip-grant-tables &


<mysql 데이터베이스로 바로 접속>

mysql설치루트/bin>./mysql -u root mysql


<update문으로 패스워드 변경>

mysql>update user set password=password('new-passwd') where user = 'root';


<mysql 접속 종료>

mysql>quit


<mysql stop하기>

mysql설치루트/bin>./mysqladmin -u root -p shutdown


<mysql 재시작>

mysql설치루트/bin>./mysqld_safe &


<mysql 접속하기>

mysql설치루트/bin>./mysql -u root -p

password:


mysql>

 

MYSQL 사용자 생성 및 권한 설정

우선 사용자를 생성하기 위해서 Root 권한으로 Mysql에 접속을 합니다.


#> Mysql  -u root -p

Enter Password : ######


mis13 이란 유저가 Mis13이란 DB의 권한을 가지게 해보겠습니다. (암호는 mis1313)


mysql> GRANT ALL PRIVILEGES ON Mis13.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;


mysql> flush privileges;


작성해주시면 끝... mis13으로 접속을 하시면 Mis13이란 DB만 보이실겁니다.


2. 그 밖에 외부에서도 접속하기, 모든 DB권한 주기


어떤 DB도 접속 가능하게 권한을 주는것은

mysql> GRANT ALL PRIVILEGES on *.*  to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql> flush privileges;


슈퍼유저로 (즉 root 권한으로) 권한을 주는것은

mysql> GRANT ALL PRIVILEGES on *.*  to mis13@"%" IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql > flush privileges;


GRANT 명령어 말고 Mysql DB 안에 User, DB 테이블에 넣는 법도 있지만 초보분이 사용하시기엔

이 방법이 편하실겁니다.


3. 모든 권한이 아닌 부분별 골라서 주기


예) mis13 이라는 계정이 전체 데이터베이스에 대해서 select, insert, delete, update 권한만 주고 싶을 경우

mysql>GRANT select, insert, delete, update on *.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql> flush privileges;


예) mis13 이라는 계정이 Mis13 이라는 데이터베이스에 대해서 select, insert, update 권한만 주고 싶을 경우

mysql>GRANT select, insert, update on Mis13.* to mis13@localhost IDENTIFIED BY 'mis1313' WITH GRANT OPTION;

mysql>flush privileges;

2009년 3월 17일 화요일

ASP- ODBC MYSQL 연동하기

아시는 분들도 있겠지만... ^^



ODBC로는 연결이 잘되는데 OLEDB로 연결하려고 삽질 했네요 ㅡㅡ'

이렇게 간단한걸...



1.준비물

MyOLEDB3.exe (http://www.mysql.com/downloads/download.php?

file=Downloads/Win32/MyOLEDB3.exe&pick=mirror)



2. Connect 부분

"Provider=MySqlProv;Location=xxx.xxx.xxx.xxx;Data Source=디비명;User ID=아이디;Password=패스;"

- 한글부분은 알아서 ^^ (xxx.xxx.xxx.xxx는 ip)



3. 간략 예제

<%

strcon = "Provider=MySqlProv;Location=xxx.xxx.xxx.xxx;Data Source=디비명;User ID=아이디;Password=패스;"

set DbCon = Server.CreateObject("ADODB.Connection")

DbCon.open strcon



SQL_query = "SELECT count(*) FROM 테이블명"

Set RS = DbCon.Execute(SQL_query)



Response.Write " Query : " + SQL_query + "<p>"

Response.Write " Result : "



while not RS.eof

Response.Write RS(0)

Response.Write "<br>"

RS.MoveNext

wend



RS.Close

DbCon.Close



set RS = nothing

set DbCon = nothing

%>