사용자 생성
create user 'centos'@'localhost' identified by 'centos';
사용자에게 권한 부여
=>GRANT ~ TO ~ 구문을 사용한다.
grant all (privileges) on centos_db.* to 'centos'@'localhost';
=>사용자에게 부분적인 권한만 부여하기
grant insert, select, delete on centos_db.cent_tbl to 'centos2';
=>사용자를 생성하면서 권한을 함께 부여하기
grant insert, select, delete on centos_db.* to 'centos3'@'localhost' identified by 'centos3';
사용자에게 주어진 권한 취소
revoke delete, insert on centos_db.* from 'centos3'@'%'; 해서 centos3 사용자에게 주어진 권한 중에서 원격에서 들어 왔을 때 delete와 insert 권한을 뺏는다.
사용자의 패스워드를 지정/변경
set password for 'centos2'@'localhost'=password('rootoor'); 해서 로컬로 로그인할 때의 centos2 사용자의 패스워드를 rootoor로 지정하거나 변경할 수 있다.
사용자의 이름 변경
=>RENAME USER ~을 사용한다.
rename user 'centos2'@'%' to 'mary'@'%'; 해서 원격에서 들어오는 centos2 사용자의 이름을 mary로 변경할 수 있다.
사용자 삭제
=>DROP USER ~를 사용한다.
drop user 'mary'@'%'; 해서 원격에서 로그인하는 mary 사용자를 삭제할 수 있다.
데이터베이스가 저장된 /var/lib/mysql 안으로 가서 보면
■ ~.frm(format file) : 테이블 구조가 저장되어져 있는 파일
■ ~.MYD(MYsql Data file) : 실제 데이터가 저장되어져 있는 파일
■ ~.MYI(MYsql Index file) : 인덱스 정보가 저장되어져 있는 파일
데이터베이스 백업
MySQL에서 데이터베이스 등을 백업할 때 binary 백업과 text 백업을 사용할 수 있다.
■ binary 백업
=>mysqlhotcopy 명령어를 사용한다.
mysqlhotcopy -u=root -p=rootoor emp_db /usr/local/src/ --allowold —keepold 해서 emp_db를 /usr/local/src/ 디렉터리에 백업하는데 --allowold는 이전에 emp_db의 백업본이 있으면 emp_db.old로 저장 한 뒤 새로 백업해주고, --keepold는 이전 백업본을 삭제하지 않고 놔둔다는 뜻이다. 지정된 /usr/local/src/에 백업된다.
■ text 백업
=>앞에서 사용해보았던 mysqldump 명령어를 사용하는데 확장자를 ~.sql로 해준다.
a. mysqldump -u root -prootoor emp_db > /var/lib/mysql/emp_db_bak.sql 해서 emp_db 데이터베이스만 백업하거나,
b. mysqldump -u root –prootoor —all-databases > /var/lib/mysql/all_dbs_bak.sql 해서 모든 데이터베이스들을 백업해둘 수 있다. 그리고
=>mysqldump -uroot -prootoor emp_db | gzip -9 > /var/lib/mysql/emp_db_bak. sql.gz 하면 emp_db 데이터베이스를 gz 포맷으로 압축해서 백업해주고,
c. 특정 테이블만 백업한다면
mysqldump -uroot –prootoor emp_db employee > /var/lib/mysql/employee _tbl_bak.sql 해서 emp_db의 employee 테이블만 백업해둘 수 있다.
데이터베이스/테이블 복원
mysql -u root –prootoor centos_db < /var/lib/mysql/centos_db_bak.sql 해서 복원해주는데 centos_db_bak.sql 파일로부터 centos_db를 복원하면 그 안의 xyz_tbl도 자동 복원된다.
데이터베이스 오류 복구
cd /var/lib/mysql/mysql/mysql && ls 해보면 파일 정의를 가진 파일포맷 .frm 파일, 테이블 인덱스를 가진 .MYI, 그리고 테이블 데이터를 가진 .MYD 파일이 있다.
myisamchk –r user.MYI 해서 오류가 있으면 수정한다.
=>MyISAM은 데이터베이스 저장 엔진으로써 데이터베이스 튜닝(tuning)에서 자주 보게 된다.
** 6개의 테이블을 생성했으면 각 데이블 간의 중복되는 항목이 있어야 join 등이 가능한데
필요하면 항목 명을
alter table cust
change prodName ProductName varchar(20);식으로 cust 테이블에서 prodName을 ProductName으로 변경해서 테이블 간 매칭을 해주면 된다.
Join
Join은 하나의 테이블에서 필요한 항목들을 얻지 못할 때 두 세개의 테이블을 연결해서 항목을 얻는 방법이다. 각 테이블에서 공통으로 있는 항목을 on으로 처리해서 작업하면 된다.
select p.ProdName, p.Unit, s.SupplierName
from products (as) p INNER JOIN suppliers (as) s
ON p.supplierID=s.supplierID; 인 경우
=>prodname, unit 항목은 products 테이블에 있고,
suooliername 항목은 suppliers 테이블에 있으므 두 테이블을 Join 해서 결과를 얻어야 한다.
두 테이블에서 공통적으로 들어 있는 항목이 supplierid이다.
LEFT/RIGHT (OUTER) JOIN
이 경우는 두 테이블의 조인에서 행 데이터가 큰 테이블이 좌측에 오면 LEFT, 우측에 오면 RIGHT를 붙인다.
=>큰_테이블 left join 작은_테이블 = 큰_테이블 join 작은_테이블(+)
'데이터베이스' 카테고리의 다른 글
PHP(HyperText Preprocessor) (0) | 2023.05.12 |
---|---|
DB #1 (0) | 2023.04.06 |