🟨 목 차 🟨
1. 데이터베이스 관리 시스템[DBMS]의 필요성
2. 데이터베이스 관리 시스템이란
3. 데이터베이스 관리 시스템의 기능
4. 데이터베이스 관리 시스템의 장점 및 단점
5. MySQL[ DBMS ] 선택
5-1. MySQL[ DBMS ] 이란
5-2. MySQL[ DBMS ] 선택 이유
6. AWS EC2 인스턴스에 MySQL 구축하기
◼️ 1. 데이터베이스 관리 시스템[DBMS]의 필요성 ◼️
데이터베이스는 데이터들을 묶어둔 집합을 말한다. 하나의 시스템에서 단 한 명의 사용자가 데이터에 접근하여 조작한다면 문제가 생기지 않겠지만, 여러 응용 시스템에서 동시에 같은 데이터를 조작하기 위해 접근하게 된다면, 누군가가 중간에서 중재해주지 않는 이상 서로 다른 데이터를 가져가게 되는 경우가 발생 할 수 있다. 정확한 데이터를 바탕으로 서비스를 제공해야 하는 기업의 경우에는 매우 치명적인 단점이다.
( 과거에는 데이터를 파일 형태로 저장하는 화일 시스템을 사용하였는데, 각각의 프로그램별로 데이터 파일을 가지고 있다보니 데이터의 구성 방법이나 접근 방법을 변경 할 때는 이것을 기초로 한 응용 프로그램도 변경해야 함(데이터 종속성)이 발생하였고, 다른 시스템에서 이용하고 있는 데이터가 필요하더라도 접근할 수 없다보니, 동일한 데이터를 여러 데이터베이스에 저장하게 한 후 데이터를 변경해야 하게 되면 다른 시스템의 파일에 저장되어 있는 동일한 데이터를 모두 찾아 내어 수정해야만 했다. ==>> 즉, 옛날엔 하나의 데이터를 바꾸기 위해 연동된 다른 시스템의 데이터를 바꿔야 하기 때문에 매우 귀찮았다. )
그래서 데이터를 다룰때 일관성(데이터 간 불일치 초래), 보안성, 경제성(저장 공간 낭비), 무결성(정확성)이 매우 중요한데 이것들을 해결해야만 했다. 왜냐하면 사용자가 언제 어느때든 데이터베이스에 접근하더라도 그 데이터가 항상 정확하다는 믿음이 생겨야 이용을 편하게 하기 때문이다. 그래서 이러한 일관성(데이터 간 불일치 초래), 보안성, 경제성, 무결성을 해결해 줄 수 있는 신박한 시스템인 데이터베이이스 관리 시스템 [DBMS] 가 등장하게 되었다.
◼️ 2. 데이터베이스 관리 시스템이란 ◼️
데이터의 일관성(데이터 간 불일치 초래), 보안성, 경제성(저장 공간 낭비), 무결성(정확성) 등을 위해 여러 응용 프로그램들과 데이터 사이에서 중재자 역할을 하는 데이터베이스 관리 시스템 [ DBMS ] 가 필요해졌다.
기존 응용 프로그램들은 데이터베이스의 생성, 접근 방법, 처리 절차, 보안, 물리적 구조에 대해서 자세히 알아야 했고, 직접적으로 데이터베이스에 접근해야만 했다.
하지만 데이터베이스 관리 시스템[ DBMSS ] 의 등장으로 인하여 사용자가 원하는 데이터와 처리 작업만을 명시하여 DBMS 에 요청하고, DBMS가 데이터베이스를 종합적으로 조직해서 접근하고 전체적으로 통제하여 원하는 데이터 작업을 할 수 있게 해준다.
◼️ 3. 데이터베이스 관리 시스템의 기능 ◼️
크게 3가지 기능으로 말할 수 있다.
- 정의 기능 : DBMS는 저장된 데이터를 모든 응용프로그램들이 요구하는 데이터 구조로 표현 할 수 있도록 가장 적절한 데이터베이스 구조를 정의할 수 있도록 지원한다.
- 조작 기능 : DBMS는 데이터베이스를 이용하는 사용자의 요구에 따라 체계적으로 데이터베이스를 접근하고 조작 할 수 있게 해준다. 사용자들은 쉽고, 명확하고, 효율적인 데이터 언어를 통해서 데이터베이스의 데이터를 조작할 수 있다.
- 제어기능 : DBMS는 데이터베이스의 데이터를 항상 정확성과 안정성을 유지 할 수 있도록 데이터를 제어하는 기능을 가진다. DBMS는 데이터를 조작하려는 작업이 데이터의 무결성을 파괴하지 않도록 요청을 제어 할 수 있으며, 접근하는 사용자의 권한을 검사하고, 보안을 유지하며, 여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리하더라도 결과는 항상 정확성을 유지하도록 병행 제어 기능을 가지고 있다.
◼️ 4. 데이터베이스 관리 시스템의 장점 및 단점 ◼️
DBMS의 장점으로 성능 향상을 이유로 데이터의 중복이 불가피한 경우를 제외하고서,
- 데이터 중복의 최소화
- 여러 응용 프로그램에서의 데이터 공용
- 데이터의 일관성 유지
- 데이터베이스가 접근 처리 될 때마다 제어 기능을 통해 유효성을 검사함으로써 데이터 무결성 유지
- DBMS가 중앙 집중식으로 총괄하면서 정당한 사용자인지 허용된 데이터와 연산인지 확인함으로써 데이터의 보안 보장
- 데이터 제어 기능을 통한 표준화
DBMS의 단점으로
- 운영비의 증대
- 특정 응용 프로그램의 복잡화
- 복잡한 백업과 회복
- 시스템의 취약성
◼️ 5. MySQL[ DBMS ] 선택 ◼️
◼️ 5-1. MySQL[ DBMS ] 이란
MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS) 이다.
MySQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원한다.
또한 C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공한다.
MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용된다.
MySQL은 오픈 소스 라이센스를 따르기는 하지만, 상업적으로 사용할 때는 상업용 라이센스를 구입해야한다.
◼️ 5-2. MySQL[ DBMS ] 선택 이유
내가 MySQL을 선택한 이유는 오픈 소스 라이센스이기 때문에 무료이며 널리 알려진 표준 SQL 형식을 사용하며 주변 사람들이 MySQL을 많이 사용하여 접근성이 쉬워 선택하게 되었다.
◼️ 6. AWS EC2 인스턴스에 MySQL 구축하기 ◼️
(필자의 환경은 맥북 M1 Pro , ubuntu 환경에서 진행되었으며, 터미널을 이용하였다.)
1. 터미널에 접속하여 AWS EC2 인스턴스에 접속한다. [ 필자는 config파일로 탄력적 IP주소를 이용하여 pem 키 파일을 자동으로 읽어 접속이 가능하게 했다. 성공적으로 접속을 하면 ubuntu@ip가 뜨게 된다.]
2. ubuntu 패키지 정보를 업데이트 한다.
==> sudo apt update 를 입력한다.
(밑의 사진은 업데이트를 한 후의 사진이므로 처음 업데이트 한 사람과 다를 수 있다.)
3. MySQL을 설치한다.
==> sudo apt install mysql-server 를 입력한다.
(밑의 사진은 mysql을 설치 를 한 후의 사진이므로 처음 업데이트 한 사람과 다를 수 있다.)
4. MySQL 설치가 되었는지 확인한다.
==> dpkg -l | grep mysql-server 를 입력한다.
5. MySQL를 접속한다.
==> sudo mysql -u root -p 를 입력한다.
(밑의 사진은 내가 MySQL 접속 이후에 비밀번호 설정을 한 후 다시 MySQL을 들어간 사진이다.)
6. MySQL 접속 오류가 났을때
[ 필자는 접속을 하는데 ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: NO) 오류가 떠서 밑의 방법으로 해결하였으니 참고바란다. ]
[ 로그인 오류 ]
유형 1) ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: NO)
- 사용자의 비밀번호가 없을 경우 나타나는 오류 문구, 아래 해결 방법에 있는 명령어들 중 하나를 선택해 입력.
[해결 방법]
1. mysql -u 사용자
2. mysql -u 사용자 -p 비밀번호
3. mysql -u 사용자 -p
Enter password : 비밀번호 입력
위 세 가지 방법 중에서 하나 선택 (3번 방법을 추천, 3번은 명령어 실행 후에 비밀번호 입력 필요함.)
유형 2) ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: YES)
- 사용자의 비밀번호가 틀렸을 경우 나타나는 오류 문구, 아래 해결 방법에 나와있는 명령어들을 입력.
[해결 방법]
mysql > use mysqlmysql > update user set password=password('비밀번호') where user='사용자'; // 비밀번호 변경mysql > flush privileges; // 변경사항 적용
[ 비밀번호 재설정 ]
[해결 방법]
mysqld --skip-grant // 인증 없이 mysql 진입
위의 유형 2번처럼 비밀번호 재설정
[ root 계정이 아닌 MySQL 유저 계정 생성 ]
1. root 계정으로 MySQL 접속
2. [유저생성] 콘솔창에 create user '아이디'@'%' identified by '비밀번호'; 입력하기
[ host를 '%'로 주면 모든 외부 IP에서 접속할 수 있다. / 특정 IP 대역에서만 접속하게 설정하려면 'IP.%'로 입력해준다.]
ex) '132.132.%' -> 132.132.xxx.xxx 에서만 접속 가능
3. [DB 권한 주기] 콘솔창에 grant all privileges on *.* to '아이디'@'%'; 입력하기
4.[최종 권한 적용] 콘솔창에 FLUSH PRIVILEGES; 입력하기
참조 : [ https://passing-story.tistory.com/142 ]
'DB > MySQL' 카테고리의 다른 글
MySQL 여러개의 SELECT 합치기(UNION) feat. Workbench (0) | 2022.08.19 |
---|---|
MySQL 테이블 레코드 조합(JOIN) feat.Workbench (0) | 2022.08.19 |
MySQL 기본문법 feat.Workbench (0) | 2022.08.19 |
Workbench(MySQL)로 스키마와 테이블 만들기 (0) | 2022.08.17 |
aws ec2 인스턴스(우분투 서버)에 MySQL Workbench 연동 (0) | 2022.08.16 |