출처 HTML PHP MYSQL 예제모음 | 지아
원문 http://blog.naver.com/jiaweb/120011930816


0) Root로 MySQL 연결

>mysql -u root -ppassword
>use mysql <- mysql db에서 사용자 생성

1) 사용자 생성하기

 

insert into db values('localhost','디비명','계정명','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
insert into db values('localhost','jacqiris','jacqiris','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

desc db 해서 host,db,usr 빼고 남은 필드 숫자만큼..Y


mysql>desc user
host,user,password 이외의 모든 칼럼 숫자를 세서 그 숫자만큼 'N'을 적어준다
위의 'N'들은 Root 같은 권한을 사용하지 못하도록 하는 설정이다

2) 데이터베이스 생성하고 USER에게 DB 할당 사용하기

mysql> create database jacqiris;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+----------+
| Database |
+----------+
| jacqiris |
| mysql |
+----------+
2 rows in set (0.00 sec)


mysql 에 쓰일 계정과
사용할 데이터베이스명을 지정하면 되는데 'Y'는 필드수만큼 지정하면 된다

(필드수는 >desc db 명령으로 host,db,user를 제외한 나머지를 'Y'로 한다)

 

insert into db values('localhost','디비명','계정명','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
insert into db values('localhost','jacqiris','jacqiris','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');



그외 DB관련 작업
DB생성: mysql> create database DB명 ( or % mysqladmin -u root -p create DB명 )
DB삭제: mysql> drop database DB명
DB사용: mysql> use DB명 (어느 DB에서 테이블들을 만들고 작업을 할것인지 사용할 DB를 지정해줌)
DB변경: mysql> alter database db명 DEFAULT CHARACTER SET charset (4.1이상에서만 available)


3) DB 접속하기

C:\>mysql -u jacqiris -p1004
ERROR 1045: 'jacqiris@localhost' 사용자는 접근이 거부 되었습니다. (Using passwor
d: 예)


당연히 에러가 난다..^^*

새로 만든 DB를 mysql에 적용하기 위하여 reload 해줘야 한다

C:\>mysqladmin -u root -p reload (or mysql> FLUSH PRIVILEGES;)
Enter password: ********


다른서버 접속
mysql -u 사용자 -p 사용DB {-h 접속호스트}
-h로 다른 서버에 존재하는 MySQL접속시 다음과 같이 MySQL DB에 설정해줘야 한다.

mysql> select host,db,user from db;
+-----------+----------+----------+
| host | db | user |
+-----------+----------+----------+
| localhost | db_nalog | nalog |
| localhost | jacqiris | jacqiris |
+-----------+----------+----------+
2 rows in set (0.00 sec)

위와 같이 host가 localhost로만 지정되어있을 경우
다른 컴에선 그 mysql로 접속해서 작업을 할수 없다
다른 컴에서 접속가능하게 하기 위해서는

mysql> INSERT INTO user VALUES('접근 허용할 ip','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('접근허용할 ip','사용DB','사용자','Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES; (or % mysqladmin -u root -p flush-privileges )

4) 테이블 만들기

mysql>CREATE TABLE free (
id int(11) unsigned NOT NULL auto_increment,
thread int(11) unsigned default '0',
depth int(11) unsigned NOT NULL default '0',
name varchar(20) NULL,
email varchar(30) NULL,
pass varchar(10) NULL,
title varchar(70) NULL,
comment text,
bangsik varchar(4) null,
date int(11) NULL,
ip varchar(16) NULL,
see int(11) unsigned default '0',
recommend int(11) unsigned default '0',
cmt_cnt INT UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
);


※ 정리 : mysql에서 작업을 하고자 한다

DB 생성 -> user 생성 -> user에게 db 쓸 권한 주고 user로 접속 테이블을 만들어 쓴다
^^*

※ 위와 같은 일련의 작업을 GRANT 명령을 이용한 사용자를 생성해보자

mydb 라는 DB를 만들고, 사용자는 emchun, 사용권한은 select,insert,update,delete,create,drop을 주소 싶다

1] create database mydb;
--데이터베이스 생성
2] grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@localhost identified by '0000';
-- emchun 아이디와 0000이라는 비밀번호를 가진 사람이 mydb의 select,insert,update,delete,create,drop권한이 있다

3] grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@'%' identified by '0000';
-- 위와 같으나 localhost아닌 다른곳에서의 접속 허용

mysql> create database mydb;
Query OK, 1 row affected (0.00 sec)

mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@localho
st identified by '0000';
Query OK, 0 rows affected (0.00 sec)

mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on mydb.* to emchun@'%' ide
ntified by '0000';
Query OK, 0 rows affected (0.00 sec)

mysql> select host,db,user from db;
+-----------+----------+----------+
| host | db | user |
+-----------+----------+----------+
| % | mydb | emchun |
| localhost | mydb | emchun |
+-----------+----------+----------+
2 rows in set (0.00 sec)



필드 추가 수정


예로 게시판을 만들다가 추천하는 필드를 한개 더 만들고 싶을때

필드 추가
alter table 테이블명 add 추가필드명 필드타입

예) alter table bbs add recommend int(11);


그런데 이렇게만 하면 recommend 값에 다른값이 들어가게 된다
기본값 0으로 넣고 싶을 경우 필드의 속성을 수정해야 한다

필드 수정
alter table 테이블명 modify 수정필드명 필드타입
예) alter table bbs modify recommend int(11) unsigned default '0';

primary key 나 그외 필드 추가 수정

차례로 다음 쿼리를 수행해주세요.

1) primary key 속성 추가 : no가 겹치는게 있으면 에러가 나므로
미리 데이타가 unique하게 만들어두고 해야합니다.

alter table 테이블명 add primary key(no);

2) auto_increment 속성 추가 및 default를 null로 : auto_increment 옵션으로 default null은 사실상 의미가 없습니다.

alter table 테이블명 modify no int default null auto_increment

'DataBase > MYSQL' 카테고리의 다른 글

MySQL 메뉴얼  (0) 2009.03.26
My-SQL DB 자동 백업 스크립  (0) 2008.09.29
DB 다른 서버로 이전방법  (0) 2008.09.29
MySQL 명령어 모음  (0) 2008.09.29