마스터포유(Master4U)
Monday, 17 of January
 

로그인 Category
MySQL 기본개념
관리자  2010-12-23 03:27:49 Hit:2751
링크 #1: http://jjjboard.com/zb/zboard.php?id=mysql&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=5

MySQL 기본개념   (2004-11-04 21:42:37, Hit : 1184, Vote : 253)



MySQL 기본개념

최조 설치 후 MySQL DB의 각종 권한을 관리하는 DB mysql에 테이블을 생성하는 스크립트 를 실행해야 한다.
#./bin/mysql_install_db (최초 설치시에만 실행하면 된다.)

서버 데몬을 가동
#cd /sbin
#chmod 700 mysql.server
#./mysql.server start 또는 ./bin/safe_mysqld &

admin password 변경
#./bin/mysqladmin ?u root password ‘user password’
또는
./mysql
mysql>update user
->set password = password(‘넣고싶은패스워드’)
->where user = ‘root’;

**update문으로 mysql DB의 user테이블의 정보를 변경시킨 후에는 MySQL서버를 재가동시켜야 한다.
#./bin/mysqladmin ?u root reload ?p
데이터베이스 정지
#./mysql.server stop 또는 ./bin/mysqladmin shutdown -p

MySQL을 처음 설치하면 2개(mysql, test)의 DB가 존재한다. (#./bin/mysql_install_db)
#./bin/mysql ?p =>패스워드가 있는 루트의 권한으로 SQL클라이언트에 접속한다.
mysql>show databases; => 현재 있는 DB를 본다.
mysql>\q [또는 exit]; => SQL클라이언트프로그램에서 빠져나온다.
모든 작업은 DB로 접속해서 해야한다(테이블작성등등…….).
#./bin/mysql ?u사용자 ?p db-name =>db-name이라는 DB에 사용자계정으로 접속한다. 권한 설정은 grant…….
mysql>Show tables; => 현재의 DB에 있는 테이블들을 보여준다.
mysql>Desc table-name; => 테이블의 구조를 보여준다.
mysql>select * from table-name; => table-name의 데이타들을 보여준다.
각 계정자들에게 BD하나씩을 만들어 주고 그곳에서 작업하게 하려면…….
#./bin/mysql -p mysql
mysql>create database 데이타베이스명; 또는
#./bin/mysqladmin -u root -p create 데이터베이스명; => DB생성
(mysql>drop database 데이타베이스명;
#./bin/mysqladmin -u root -p drop 데이터베이스명; =>DB삭제)

mysql>grant all privileges on 데이타베이스명.* to 계정자@localhost identified
by ‘passwd’; => 계정자에게 데이타베이스명의 DB에 모든 권한을 부여.

새로운 사용자를 등록(mysql의 user테이블에 등록)
mysql>insert into (host, user, password) values(‘localhost’ ,’pclab’,
‘password(‘A’)’); =>위의 grant문과 비교바람.

각 계정자들이 접속하여 작업하는 방법(데이터베이스관리언어)
$/usr/local/mysql/bin/mysql -p 데이타베이스명
mysql>create table 테이블명(필드명 형태 [null/not null]); =>table을 생성한다.
=>필드명이 많을 경우 ,구분한다.
mysql>insert into 테이블명 (필드1, 필드2, …) values(‘필드1값’, ‘필드2값’, …);
mysql>drop table 테이블명; =>테이블을 삭제한다.
mysql>update 테이블명 set 필드명 = 필드값 또는 산술식 [where 검색조건];
mysql>flush privileges; =>updata실행후에 실행
mysql>delete from 테이블명 [where 필드명=”원하는 레코드”];
=>drop과 구분. 테이블명을 지우는 것이고 delete는 attribute제거
=>[where 조건식]이 있는 경우는 조건에 맞는 테이블의 레코드만 삭제
=>where절이 없으면 모든 데이터삭제한다.
mysql>select * from 테이블명 [where 필드명];
=>테이블명에 [필드명에 있는] 있는 내용들을 본다.
mysql>show tables; => 현재의 DB에 있는 테이블들을 본다. 없다면 생성
mysql>desc 테이블명; => 테이블 구조를 본다.
mysql>select column from 테이블명; == mysql>desc 테이블명;
mysql>alter table 테이블명 add <attribute name><attribute list>;
=> 이미 존재하는 table에 새로운 attribute추가
mysql>alter table 테이블명 drop <attribute name> cascade; => 이미 존재하는 table에 기존의 attribute 제거

**MySQL은 데이터베이스는 디렉토리로, 테이블은 파일로 저장한다.
**결과 레코드의 중복제거
mysql>select DISTINCT attribute(필드) from tablae-name;
=>필드에서 유일한 값만 출력한다. 중복되는 값들 제거.
**where절 뒤에는 조건검색도 가능..
**검색결과의 정렬
mysql>select * from table-name order by 필드명 [asc/desc];
=>table-name 테이블의 필드명을 [오름차순/내림차순]으로 정렬
**select절에서는 필드명뿐 아니라 문자열과 산술식이 올 수 있다.
mysql>select milage+300 from table-name where 레코드;
**그룹 함수를 이용한 검색
1. count(필드명) 2.sum(필드명) 3.max(필드명) 4. avg(필드명)
mysql>select count(*) from table-name where 필드명[과 조건];
**like를 이용한 검색
mysql>select name from userdb where name like ‘%현%’;
‘현’이라는 문자가 들어간 레코드를 검색한다.
%는 여러분자를 뜻한다. 즉 ‘%현’이면 끝나는 문자가 현이어야 한다.
**null값을 갖는 데이터 검색
mysql>select name,id from userdb where email is null;
=>email을 입력하지 않은 ID를 찾는다.

개인의 각자의 아이디로 서버에 접속 후 각 계정과 같은 이름의 DB에 접속해서 사용하세요.
mysql>/usr/local/mysql/bin/mysql -u [자기계정명] -p 자기계정
password : 항상 하는 것 (5개 5개)
=> -u [자기계정명] 에서 자기계정명으로 접속하는 것이고 뒤의 자기계정은 각 사용자의 계정명과 같은 DB를 말함.

데이터베이스의 사용권한 설정
사용자권한은 mysql이라는 데이터베이스에서 설정한다. 즉 mysql데이터베이스는 특정 데이터를 저장하기 위한 일반적인 데이터베이스의 하나가 아니라 MySQL서버에 저장되어 있는 모든 데이터베이스에 대한 권한 설정을 담고 있는 데이터베이스 즉 마스터 데이터베이스라고 할 수 있다.
mysql DB에는 columns_priv, db, func, host, tables_priv, user등의 테이블이 있다.
(#./bin/mysql ?p mysql로 클라이언트 접속 후 mysql>show tables;로 확인)

**user테이블
MySQL서버에 생성되어 있는 데이터베이스를 사용할 권한을 갖는 사용자에 대한 정보를 담고 있는 테이블이다. 즉 host, user, password등 사용자 정보와 해당 사용자가 데이터베이스에 대해 가질수 있는 권한에 대한 정보로 구성되어 있다.
mysql>desc user; => user테이블의 구조를 본다.
mysql>select * from user; => 각 레코드 값들을 볼 수 있다

**db테이블
db명과 이 db를 사용할 권한을 갖는 사용자(user) 및 host와 이 db를 조작할 수 있는 여러 가지 권한에 대한 설정 항목을 갖는다.

예를 들어 sample이라는 DB를 pclab사용자가 모든 권한을 가지게 하려면,
mysql>insert into db values ( ‘%[host]’, ’sample’ ,php’ ,’y’ ,’y’ ,’y’ ,’y’ ,’y’ ,
’y’ ,’y’ ,’y’ ,’y’ ,’y’);
=>’y’의 개수는 mysql>desc db;로 권한을 줄 수 있는 레코드를 확인,
mysql>grant all privileges on sample.* to pclab@localhost identified by ‘P/W’;
=>sample.* 의 의미는 sample DB의 모든 테이블에 권한을 준다는 것이다.
다른 예로 sample DB안의 test라는 테이블에 권한을 주려면 sample.test.

모든 데이터베이스의 모든 테이블에 모든 권한을 부여하는방법
mysql>grant all privileges on *.* to pclab@localhost identified by ‘P/W’ with
grant option;
mysql>insert into user values(‘localhost’,’pclab,password(‘P/W’), ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’, ‘y’);
=>mysql>desc user; 또는 mysql>select * from user; 로 확인
mysql>flush privileges;

ex)
mysql>grant all privileges on 데이타베이스명.* to 아이디@localhost identified by '패스워드';
mysql>create database 데이타베이스명;
mysql>show databases;


####MySQL에서 데이터 백업과 복구;
#./bin/mysqldump -u [DB사용자] -p [백업할 데이터베이스의 이름] > [파일이름]
=>파일은 현재의 작업디렉토리에 생긴다.
#./bin/mysql -u [DB사용자] -p [복구할 데이터베이스의 이름] <[백업한 파일이름]
=>백업한 파일이 현재의 디렉토리(위 경우/usr/local/mysql)에 위치해야 한다.
본문인쇄본문메일발송
MySQL Admin Tool 어드민툴
금주의 게시물 SQL로 한큐에 뽑아내기! [1]
Copyright 1999-2019 Zeroboard / skin by ChanBi