프롤로그
오늘도 빠르게 달려보자.
MySQL이란?
오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. 데이터를 테이블 형식으로 저장하고, SQL(Structured Query Language)을 사용하여 데이터를 관리 하는 시스템이다.
웹 개발에서 데이터를 저장하고, 관리하는데 널리 사용되며, Linux, Apache, MySQL, PHP/Python/Perl 에서 중요한 역할을 한다.
정리를 하자면, MySQL은 데이터들을 테이블에 저장하는 관계형 데이터베이스(RDBMS)이고, 각 테이블들은 행과 열로 구성되어 있다. SQL문을 사용하여 데이터를 쿼리하고 수정할 수 있다.
이름에서부터 MySQL, SQL을 쓰는건데, 많은 양의 데이터를 처리할 수 있고, 데이터베이스 서버를 확장할 수 있다.
Ubuntu에 MySQL 설치하기
sudo apt update
sudo apt upgrade
sudo apt install mysql-server
를 통해서 MySQL을 설치한다.
sudo systemctl start mysql
sudo systemctl status mysql
로 MySQL 서버를 실행하고 상태를 확인할 수 있다.
저 데이터베이스에 접근을 하기 위해선
sudo mysql -u root -p
입력하고 비밀번호는 아직 설정하지 않았기에 그냥 엔터를 누르면 접속이 될 것이다.
show databases;
를 입력후 엔터를 누르면
데이터베이스에 접근해서, 현재 어떤 데이터베이트가 존재하는지 확인할 수 있다.
데이터베이스를 종료하기 위해서
exit
를 입력하면 탈출 할 수 있다.
mysql_secure_installation
MySQL 서버의 보안 설정을 강화하기 위한 도구이다.
sudo mysq_secure_installation
을 입력하면
1. 루트 계정 비밀번호 생성 : 비번 보안 정도는?
2. 루트 계정의 원격 접속 제한
3. 익명 사용자 제거
4. 테스트 데이터베이스 제거
5. 권한 테이블 새로고침
순으로 물어보는데, 일단 난 MEDIUM으로 설정해놓고 나머지 전부다 yes만 입력해주었다.
MySQL 비밀번호 설정
일단은 보안 수준을 다시 LOW로 설정하겠다.
sudo mysql
SET GLOBAL validate_password.policy = LOW;
그 다음 비밀번호 설정을 위해
ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password by '사용자 설정 비밀번호';
이렇게 입력해주면, 비밀번호가 설정된다.
이제
exit;
sudo mysql -u root -p
로 접근하면
비밀번호를 입력해야만 들어갈 수 있다.
DDL(Data Definitaion Language)
데이터베이스의 구조나 스키마를 정의하는데 사용되는 SQL 명령어이다. 대충 데이터베이스 객체를 생성, 수정, 삭제하는 작업을 수행한다.
처음에
show databases;
를 해보면
이런 데이터베이스들이 있다. 일단 새로운 데이터베이스 'test'를 하나 생성해보자.
create database test;
show databases;
test가 생성되었고, 이제 저기 test라는 데이터베이스에 들어가서 테이블을 만들어 보자.
USE test;
를 하면 해당 데이터베이스를 사용하게 되고
여기서
CREATE TABLE users(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
age INT
);
를 입력하면, users라는 테이블이 생성이 된다.
그러고, 테이블 구조를 확인하기 위해서
describe users;
를 하게 되면
방금 생성한 users의 구조를 확인할 수 있다.
만약 지울려면,
DROP TABLE users;
를 사용하면 된다.
DML(Data Manipulation)
데이터를 조작하는데 사용된다. 데이터의 입력, 수정, 삭제, 조회 등에 수행된다.
아까 만들었던 users 테이블에 데이터를 집어넣어보자.
INSERT INTO users (name, age) VALUES ('a', 20);
INSERT INTO users (name, age) VALUES ('b', 30);
INSERT INTO users (name, age) VALUES ('c', 40);
이렇게 INSERT INTO 테이블 ~~~ VALUES 를 사용해서 데이터베이스에 데이터를 넣을 수 있다.
그리고 데이터 조회를 위해선
SELECt * From users;
를 통해서
어떤 데이터가 있는지 확인가능하다.
이제 나이들을 전부 바꿔보자. 데이터를 수정할 때는 UPDATE를 사용한다.
UPDATE users SET age = 25 WHERE name = 'a';
UPDATE users SET age = 35 WHERE name = 'b';
UPDATE users SET age = 45 WHERE name = 'c';
이렇게 수정이 되는 것을 확인할 수 있다.
마지막으로 데이터를 지울려면 DELETE를 사용한다.
delete from users where age = 25;
나이가 25살인 a가 삭제되었다.
DCL(Data Control Language)
데이터베이스에 대한 권한 관리, 권환 부여 및 회수 등에 사용된다.
여긴 유저를 직접 건들여야해서, 실습은 없고 어떻게 하는지만 적겠다.
특정 사용자에게 권한을 주어줄려면
GRANT SELECT, INSERT ON test.* TO 'username'@'localhost';
GRANT ALL PRIVILEGES ON test.* TO 'username'@'localhost';
이렇게 GRANT를 이용해서 권한을 부여해준다. 권한 있는 사람만 위에 있던 명령어들을 사용할 수 있다.
권한이 부여가 되었으면 적용을 시켜야ㅕ하는데
FLUSH PRIVILEGES;
로 적용시킨다.
권한을 뺄려면 아까랑 비슷한데, GRANT를 REVOKE로 바꿔주기만 하면 된다
REVOKE SELECT, INSERT ON test.* TO 'username'@'localhost';
REVOKE ALL PRIVILEGES ON test.* TO 'username'@'localhost';
에필로그
간단한 내용들만 있는데, 실제적으로 사용하고 적용하려면은 어렵다.
'KnockOn' 카테고리의 다른 글
[3주차 TIL] KnockOn Bootcamp PHP와 MySQL 연결, 회원가입과 로그인 (0) | 2024.12.22 |
---|---|
[3주차 TIL] KnockOn Bootcamp PHP (0) | 2024.12.21 |
[3주차 TIL] KnockOn Bootcamp Apache (2) | 2024.12.20 |
[1주차 TIL] KnockOn Bootcamp HTML, CSS, JS (0) | 2024.12.09 |
[1주차 TIL] KnockOn Bootcamp 프록시 (1) | 2024.12.07 |