maria DB
데이터베이스 이름 조회
SHOW DATABASE;
→ shopping_db, mysql, test 3개의 데이터베이스 이름이 나온다
사용할 데이터베이스 지정
USE shopping_db;
→ 지금부터 shopping_db라는 데이터베이스를 사용하겠다
데이터베이스 생성, 삭제
CREATE DABASE shopping_db;
DROP DATABASE shopping_db;
테이블 이름 조회
SHOW TABLES;
→ 현재 선택한 DB에 있는 테이블 이름을 조회 한다. 만약 쇼핑몰 DB라면 CUSTOMER, PURCHASE가 조회된다
테이블 구조 조회
EXPLAIN customer;
→ CUSTOMER 테이블의 필드 이름, 데이터 타입 등의 정보를 확인한다.
테이블 생성, 삭제
CREATE TABLE customer (id CHAR(10), name VARCHAR(10), age INT, ADDRESS VARCHAR(30));
→ 고객정보 테이블 생성
DROP TABLE customer;
테이블 수정
ALTER TABLE customer MODIFY name CHAR(20);
→ customer 테이블의 name 필드 데이터 타입을 char(20)으로 변경
ALTER TABLE customer CHANGE name fullname CHAR(10);
→ customer 테이블의 name필드 이름을 fullname으로 바꾸고 자릿수는 char(10)으로 지정
ALTER TABLE ADD phone VARCHAR(20) AFTER name;
→ customer 테이블에서 name필드 바로 다음에 phone필드 추가
ALTER TABLE customer DROP age;
→ customer 테이블에서 age필드 삭제
레코드 입력, 삭제, 수정
INSERT INTO customer VALUES (’hong’, ‘홍길동’, 22, ‘경기’;);
DELETE FROM customer WHERE id=’hong’;
→ customer 테이블에서 id필드값이 hong인 레코드 삭제
UPDATE customer age=25 WHERE id=’hong’;
→ customer 테이블에서 id필드값이 hong인 레코드의 age를 25로 수정
테이블 조회
SELECT * FROM customer;
→ customer 테이블에서 모든 레코드의 모든 필드 조회
SELECT id, name FROM customer;
→ customer 테이블에서 모든 레코드의 id, name필드 조회
SELECT id, name FROM customer WHERE id=’john’;
→ customer 테이블에서 id필드값이 john인 레코드의 id,name 필드 조회
SELECT id, name FROM customer WHERE age >= 25;
→ customer 테이블에서 age필드 값이 25 이상인 레코드의 id,name 필드값을 조회
MariaDB 설치 및 운영
Server
1. MariaDB 파일 설치
http://yum.mariadb.org/10.4/cenos8-amd64/rpms
galera-4-26.4.3-1.rhel8.0.el8.x86_64.rpm MariaDB-client-10.4.10-1.el8.x86_64.rpm MariaDB-common-10.4.10-1.el8.x86_64.rpm MariaDB-server-10.4.10-1.el8.x86_64.rpm
#dnf -y install galera*.rpm
#dnf -y install MariaDB*.rpm
#systemctl restart mariadb
#systemctl enable mariadb
#firewall-cmd —permanent —add-service=mysql
#firewall-cmd —reload
2. 데이터베이스 관리자 root 패스워드 설정
#mysqladmin -u root password ‘1234’
#mysql -h localhost -u root -p
1234 입력
로그인 확인 → exit
Server B
1. DB 서버에 로그인 시도
#mysql -h 192.169.111.130 -u root -p
1234 입력
로그인 실패
실패의 이유는 MariaDB는 이메일 형식으로 사용자를 관리한다. 즉 ‘사용자@호스트’ 그래서 DB 서버에서 비밀번호를 1234로 지정한 데이터베이스의 사용자 root의 정식이름은 ‘root@localhost’ 였던것
그러므로 MariaDB 서버에 접속이 허용 된 사용자는 root@localhost 또는 root@127.0.0.1 뿐 root@192.168.111.129 사용자는 존재하지 않기에 접속이 거부된것이다.
Server
1. user 테이블 조회
#USE mysql;
#SELECT user,host FROM user WHERE user NOT LIKE ‘’;
2. Server B에서 접속할 수 있게 ip대역 추가
#CREATE user LinuxUser@'192.168.111.%' IDENTIFIED BY '4321'; : 계정 및 패스워드 추가
#GRANT ALL ON . TO LinuxUser@'192.168.111.%'; : 권한 추가
GRANT 사용권한 ON 데이터베이스이름.테이블이름 TO 사용자이름@’호스트이름’
Server B
1. DB 서버에 다시 로그인 시도
#mysql -h 192.169.111.130 -u LinuxUser -p4321
→ 성공
2. DATABASE 생성
#CREATE DATABASE shopping_db CHARACTER SET utf8;
#SHOW DATABASES;
3. TABLE 생성
#CREATE TABLE customer ( id VARCHAR(10) NOT NULL PRIMARY KEY, name VARCHAR(5), age INT, address VARCHAR(5) );
#CREATE TABLE purchase ( no INT NOT NULL PRIMARY KEY AUTO_INCREMENT, cust_id VARCHAR(5), date CHAR(8), product VARCHAR(5) );
#DESC customer;
#DESC purchase;
2개 테이블의 구조확인
4. 레코드 삽입
#INSERT INTO customer VALUES ('hong', '홍길동', 22, '경기');
#INSERT INTO customer VALUES ('dang', '당탕이', 23, '충북');
#INSERT INTO customer VALUES ('ppuni', '이뿌니', 30, '서울');
#INSERT INTO customer VALUES ('john', '존밴이', 28, '강원');
#INSERT INTO purchase VALUES (null, 'hong', '20160122', 'TV*);
#INSERT INTO purchase VALUES (null, 'ppuni', '20160211', 'TV');
#INSERT INTO purchase VALUES (null, 'john', '20160211', ‘냉장고');
#INSERT INTO purchase VALUES (null, 'hong', '20160222', '세탁기’);
#INSERT INTO purchase VALUES (null, 'john', '20160311', '비디오');
#SELECT * FROM customer;
#SELECT * FROM purchase;