RDBMS
- 사용자는 데이터베이스 언어를 이용해, 테이블 구조로 저장되어 있는 데이터베이스의 데이터에 접근
MySQL이 가장 많이 사용되고 있는 오픈소스 RDBMS이다.
2000년 이후로 지속적으로 언급되고 있는 데이터 베이스
MySQL 특징
- 다중 사용자와 다중 스레드 지원
- C, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API 제공, 특히 PHP와 함께 웹 개발에 자주 사용된다.
- 리눅스, 윈도우 등 다양한 운영체제에서 사용 가능
- 상업적으로 사용할 때는 상업용 라이센스 구입 필요
윈도우는 그냥 아래 사이트에서 MySQL 을 설치해면 된다.
MySQL :: Download MySQL Installer
MySQL Installer 8.0.41 Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8.1, use a MySQL product's MSI or Zip archive for installation. MySQL Server 8.1 and higher also bundle MySQL Configurator, a tool that helps configure MySQL Serve
dev.mysql.com
리눅스의 경우에는, apt 명령을 통해 MySQL 패키지를 설치한다.
$ sudo apt update # 최신 패키지 파일 확인
$ sudo apt-get install mysql-server # mysql-server 설치
MySQL이 설치되면 서비스가 실행되고 있는 지 확인하면 된다.
$ sudo systemctl status mysql # 서비스 실행 확인
$ sudo systemctl start mysql # 만약 서비스가 꺼져있다면, start하도록 하자
MySQL은 보안성 설정을 할 수 있다.
$ sudo mysql_secure_installation
DBMS에 접속하기 위해서는 사용자 인증이 필요하다. 주어진 권한별로 사용자 역할을 구분한다.
- Root 사용자
- MySQL의 관리자로 모든 자원 관리
- 설치할 때 기본으로 등록된다.
- 일반 사용자
- MySQL의 관리자를 통해서 생성된 사용자
Root를 접근하기 위해서는 아래 명령어를 사용하면 된다.
$ sudo mysql -u root -p
$ sudo mysql -uroot # mysql은 특이하게 띄어쓰기 없어도 인식 됨
mysql에 사용자로 접근하게 되면 다음과 같은 명령어를 입력할 수 있다.
show databases; # 데이터베이스 확인
use mysql; # 사용할 데이터 베이스 선택, mysql 데이터베이스를 선택한 거임
show tables; # 선택된 데이터베이스 내의 테이블 확인
select host, user, plugin, authentication_string from user; # mysql 데이터베이스에는 기본적으로 user 테이블에 사용자 정보를 올려둔다.
user 테이블에 사용자를 추가할 수 있다.
CREATE USER '계정아이디'@'localhost' IDENTIFIED BY '비밀번호'; # 내부 IP 접속 계정
CREATE USER '계정아이디'@'%' IDENTIFIED BY '비밀번호'; # 외부 IP 접속 계정
사용자별로 접근 권한을 부여할 수 있다.
# GRANT [권한] ON [자원] TO [사용자] [옵션]
GRANT ALL PRIVILEGES ON *.* TO 'test01'@'%';
# *.* : 모든 데이터베이스와 테이블
# test01 : 사용자명
# '%' 외부 네트워크 주소, 내부 네트워크 하려면 'localhost' 하면 됨
# 권한 부여 후에는 flush 해줘야함
FLUSH PRIVILEGES;
# 계정 권한 부여 확인
SHOW GRANTS FOR '계정아이디'@'호스트';
외부에서 가져온 데이터베이스를 읽어올 수도 있다.
ex) test01 계정으로 employee.sql 파일을 읽어옴
$ mysql -u test01 -p -t < employees.sql
MySQL을 외부에서 접근 가능하게 하려면
/etc/mysql/mysql.conf.d/mysqld.cnf의 환경설정 파일을 건드려줘야 한다.
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
으로 설정해준다면, 모든 외부 커넥션 요청을 허용하는 것이다.
설정을 완료했다면 서비스를 껐다가 키자
$ sudo systemctl restart mysql