MariaDB 설치
# DB서버를 구축할 VM에 해당 명령어를 통해 MariaDB를 설치
yum -y install mariadb-server mariadb
systemctl start mariadb
방화벽 설정
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload
# 이후 GUI 환경에서 방화벽을 설정해본다
firewall-config
# 이후 Permanent 설정후 mysql 체크, Opthion 탭에서 reoad firewall을 누른다
DB 실습
mysql -u root -p
# 해당명령어로 mysql 서버 접속 후 Database를 열람
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
# 출력됨을 확인할 수 있다.
mysqladmin -u root password '1234'
# root 에게 1234의 패스워드를 부여한다.
Client 서버에서 DB 서버로 접속하기
# 2번 VM (Client) 서버에서도 MariaDB를 설치한다
yum -y install mariadb-server mariadb
# mysql 명령어를 사용하기위해 설치한다
mysql -h 192.168.56.20 -u root -p
ERROR 1130 (HY000): Host '192.168.56.21' is not allowed to connect to this MariaDB server
# 해당 명령어를 입력하여 DB서버 접속시 ERROR가 발생한다. 이유는 서버 1(DB서버)에서 외부 접속을 허용하지 않았기 때문에 이런 ERROR가 발생한것이다.
DB서버 외부접속 허용하기 및 계정생성
# 다시 1번서버로 접속을 한다.
mysql -u root -p
# 로그인 후 DATABASE를 확인한다
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
# MariaDB를 생성하게되면 root 계정이 하나 생성되고 비밀번호는 없다. 로컬에서만 생성되기 때문에 외부(VM2)에서 접속이 불가능하다. 따라서 접속이 가능한 계정을 하나 생성할 것이다.
use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
# mysql 데이터베이스를 사용하는데 필요한 정보들이 들어있다.
show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)
# mysql 데이터베이스의 테이블들의 목록을 조회할수 있고 user에 사용자에 대한 정보가 있다.
select user, host from user where user NOT LIKE '';
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | host |
| root | localhost |
+------+-----------+
4 rows in set (0.00 sec)
# 해석 : user, host(세로줄인 컬럼들) 을 user라는 테이블에서 검색을 하되 user 컬럼에서 공백인 부분은 검색하지 말라는 뜻이다.
GRANT ALL PRIVILEGES ON *.* TO test@'192.168.56.%' IDENTIFIED BY '1234'
Query OK, 0 rows affected (0.00 sec)
# GRANT 권한 부여. *.*의 의미는 데이터베이스와 모든 테이블에 권한을 주겠다는 뜻이다.
# TEST라는 계정이 접속할 수 있는 사람은 192.168.56.1~255 이다.
# 비밀번호는 1234로 부여하였다.
select user, host from user;
+------+--------------+
| user | host |
+------+--------------+
| root | 127.0.0.1 |
| test | 192.168.56.% |
| root | ::1 |
| | host |
| root | host |
| | localhost |
| root | localhost |
+------+--------------+
# user 테이블에 test 계정이 추가됨을 확인할 수 있다.
데이터베이스 실습
# 2번 계정에 접속한다.
mysql -h 192.168.56.20 -u test -p
# 이후 test 1번 서버에서 생성한 test 계정을 접속하고 데이터 베이스를 확인해본다
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
# 새로운 DATABASE인 member_db를 추가해보겠다
CREATE DATABASE member_db;
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| member_db |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
# member_db가 추가됨을 확인할 수 있다.
use member_db;
Database changed
# 생성한 데이터베이스인 member_db를 선택하고 테이블을 확인한다
show tables;
Empty set (0.00 sec)
# 아무것도 생성하지 않았으니 아무것도 뜨지 않는다.
CREATE TABLE member (
-> id VARCHAR(12) NOT NULL PRIMARY KEY, # 가변형 문자 12문자 허용에 NULL허용 안하고 Primary
-> name NVARCHAR(5), # KET 설정
-> age INT,
-> address NVARCHAR(5));
# 새로운 테이블인 member를 생성한다
# 값을 입력할때 ID, NAME, AGE, ADDRESS 순서로 입력하면 된다.
explain member;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | varchar(12) | NO | PRI | NULL | |
| name | varchar(5) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| address | varchar(5) | YES | | NULL | |
+---------+-------------+------+
# member에 대한 정보를 확인한다
# explain 테이블은 테이블의 구조를 보는 명령어이다 #DESC
INSERT INTO member VALUES ('kim','kimchulsu',35,'seoul');
INSERT INTO member VALUES ('lee','leehosung',30,'seoul');
INSERT INTO member VALUES ('park','parkjisung',20,'busan');
INSERT INTO member VALUES ('joe','joeinyoung',40,'daegu');
# member 테이블에 값을 입력한다.
# member 테이블의 모든 데이터를 확인해보자
select * from member;
+------+-------+------+---------+
| id | name | age | address |
+------+-------+------+---------+
| joe | joein | 40 | daegu |
| kim | kimch | 35 | seoul |
| lee | leeho | 30 | seoul |
| park | parkj | 20 | busan |
+------+-------+------+---------+
4 rows in set (0.00 sec)
# 모든 내용을 조회하라는 뜻이다. name이 5글자만 들어간 이유는 name세팅시 5글자만 허용했기 때문이다.
실습 1
문제
# member 테이블에서 아이디가 'kim'인 데이터를 조회
명령어
select * from member where id='kim';
출력결과
+-----+-------+------+---------+
| id | name | age | address |
+-----+-------+------+---------+
| kim | kimch | 35 | seoul |
+-----+-------+------+---------+
1 row in set (0.00 sec)
실습 2
문제
# member 테이블에서 나이가 30살 이상인 데이터를 조회
명령어
select * from member where age >30;
출력결과
+-----+-------+------+---------+
| id | name | age | address |
+-----+-------+------+---------+
| joe | joein | 40 | daegu |
| kim | kimch | 35 | seoul |
+-----+-------+------+---------+
실습 3
문제
# 아이디가 kim인 사람의 나이를 검색하라
명령어
select age from member where id='kim';
출력결과
+------+
| age |
+------+
| 35 |
+------+
1 row in set (0.00 sec)
실습 4
문제
# joe라는 아이디를 가진 사람의 나이를 50으로 세팅하시오
명령어
update member set age=50 where id ='joe';
출력결과
select * from member;
+------+-------+------+---------+
| id | name | age | address |
+------+-------+------+---------+
| joe | joein | 50 | daegu |
| kim | kimch | 35 | seoul |
| lee | leeho | 30 | seoul |
| park | parkj | 20 | busan |
+------+-------+------+---------+
4 rows in set (0.00 sec)
# joe 나이(age)가 50으로 바뀐것을 알 수 있다.
NVARCHAR와 VARCHAR의 차이
# VARCHAR는 영어만 입력이 가능하지만 NVARCHAR는 한글도 입력이 가능하다
# N은 유니코드를 뜻한다.
# 한글 데이터를 저장하고 싶다면 NVARCHAR를 이용한다.
'DevOps > Linux' 카테고리의 다른 글
[Linux] Linux 파일 전송 프로토콜 (0) | 2021.08.25 |
---|---|
[Linux] XE를 이용하여 웹서버 구축하기 (0) | 2021.08.25 |
[Linux] SELinux (0) | 2021.08.24 |
[Linux] Linux 데이터베이스 기초 (0) | 2021.08.24 |
[Linux] DNS 레코드 (0) | 2021.08.23 |