Linux/build

maria DB

Lee seongwoo 2024. 9. 30. 12:29
반응형

데이터베이스 이름 조회

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.1root@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;

 

반응형