특정 사용자에게 모든 데이터베이스의 모든 테이블에 모든 권한 부여특정 사용자에게 특정 DB의 모든 테이블에 모든 권한 부여특정 사용자에게 특정 DB의 특정 테이블에 모든 권한 부여특정 사용자에게 특정 DB의 특정 테이블에 특정 권한 부여특정 사용자에게 특정 DB의 특정

리눅스 환경에서 MySQL을 설치하는 방법은 크게 두 가지가 있다.제가 CLI 기반으로 설치 하는 방법을 아래 두 방법만 알고 있습니다...MySQL 리포지토리를 직접 설치하여 MySQL을 설치하는 방법Linux OS에서 기본으로 제공하는 MySQL 패키지를 사용하여
Main PC : macOS (Apple Silicon)Virtual PC : Oracle VirtualBox 기반 Linux OS(CentOS 9)Architecture : ARM64(aarch64)Apple Silicon 기반의 macOS에서 VirtualBox로

Main PC : macOS (Apple Silicon)Virtual PC : Oracle VirtualBox 기반 Linux OS(CentOS 9)Architecture : ARM64(aarch64)Apple Silicon 기반의 macOS에서 VirtualBox로
MySQL에서 사용자는 단순 ID뿐만 아니라 사용자의 IP 접속 정보도 확인할 수 있다.MySQL 8.0 이후부터는 역할(Role) 이라는 개념이 등장했다.역할(Role) : 권한의 집합으로 특정 상황에 맞는 권한들의 집합을 의미MySQL에서는 사용자의 계정은 ID와
MySQL에서 권한은 정적 권한과 동적 권한으로 나뉘며, 정적 권한에는 글로벌 권한과 객체 단위 권한으로 나뉜다.정적 권한 : MySQL 서버 어딘가에 고정적으로 명시된 권한글로벌 권한 : 파일, 서버 단위 권한 설정객체 권한 : 데이터베이스, 테이블, 인덱스 등 객체
MySQL 서버의 아키텍처는 크게 MySQL 엔진과 MySQL 스토리지 엔진으로 구분된다.각 엔진에는 다양한 주제가 존재하지만, 그중 제일 중요한 주제는 아래와 같다고 생각한다.MySQL 엔진의 "SQL 옵티마이저"MySQL 스토리지 엔진의 "InnoDB"클라이언트로부
MySQL에서는 기본적으로 InnoDB 스토리지 엔진을 사용한다.MySQL의 다양한 스토리지 엔진 중 거의 유일하게 InnoDB 스토리지 엔진만 레코드 기반의 잠금 기능을 제공한다. 이러한 이유로 높은 동시성 처리가 가능하며, 안정적인 성능을 자랑한다.InnoDB는 기

MySQL 서버의 상태를 진단하는 도구는 정말 많다. 이러한 도구는 높은 지식을 요구하는 경우가 많다. 하지만 로그 파일을 이용한 방법은 높은 지식 없이도 MySQL의 상태나 부하의 원인을 쉽게 찾을 수 있다.‼️ MySQL 서버에 문제가 발생하면 아래 로그 파일을 확
인덱스는 DB에서 대용량의 데이터(수만 건 이상의 데이터)를 빠르게 읽기(SELECT) 위해 사용되는 기술이다.인덱스를 사용하면 테이블의 Full Scan을 막아 읽기(SELECT) 성능을 높여주지만, 그 외 쓰기(INSERT, UPDATE, DELETE) 성능이 낮아
옵티마이저(Optimizer)는 사용자가 요청한 쿼리문을 가장 효율적으로 처리할 수 있는 실행 계획을 선택하는 DBMS의 핵심 엔진이다.하나의 쿼리문을 처리하는 방법은 여러 가지가 존재하며, 옵티마이저는 이들 중에서 가장 비용이 적은 최적의 실행 계획을 선택하여 실행한

MySQL에서 CHAR와 VARCHAR는 모두 문자열 저장에 사용되는 데이터 타입이다.문자열 크기 저장시 바이트 단위가 아닌 문자의 길이를 명시하여 저장한다.CHAR는 고정타입이고, VARCHAR는 가변타입이다.CHAR : 문자의 길이와 상관 없이 한 번 정의된 크기로
MySQL에서 VARCHAR와 TEXT는 모두 문자열 저장에 사용되는 데이터 타입이다.두 타입 모두 65,535 bytes까지 저장 가능하다.VARCHAR 타입은 컬럼 선언 시 저장할 문자열의 최대 길이를 명시해야 하며, 해당 길이까지 저장할 수 있다.TEXT 타입은
SELECT \* 과 SELECT COUNT(\*) 쿼리 비교 시 뭐가 더 성능이 좋을까?? \-> 일반적으로 두 쿼리 중 SELECT \* 쿼리가 더 좋은 성능을 보여준다.SELECT \* 쿼리는 리미트 조건이 일반적으로 있지만, SELECT COUNT(\*) 쿼리
SQL 쿼리문을 작성할 때 가독성 높게 작성하는 것은 매우 중요하다.쿼리문의 의도를 보다 쉽게 이해할 수 있다.여러 사람과 협업 시 쿼리문을 통한 커뮤니케이션이 쉽고, 업무 효율성이 증가한다.에러 발생 시 원인을 빠르게 찾을 수 있고, 쉽게 유지보수 할 수 있다.사실
MySQL에는 크게 세 가지 함수가 있다.Built-in Function : 내장 함수로 MySQL에서 기본으로 제공해 주는 함수Stored Function : 사용자가 직접 쿼리문을 사용하여 정의한 함수, MySQL 서버에 함수를 생성/저장하여 사용한다.User De
MySQL에서 에러는 크게 세 가지로 구분된다.Global Error : Server Error + Client Error 공용으로 발생하는 에러Server Error : MySQL 서버에서 발생하는 에러Client Error : 프로그래밍 언어별 커넥터에서 발생하는
정규표현식_REGEXP
미리 구분자를 정의하여 문자 합치기모든 문자(영어)를 대문자로 변환모든 문자(영어)를 소문자로 변환문자 길이X문자 크기O (바이트 단위로 반환)문자 길이O (공백까지 길이 계산)문자 크기X문자 길이O (공백까지 길이 계산)특정 문자가 처음 시작하는 위치(길이) 반환만약
스토어드(저장) 프로시저는 여러 쿼리문의 집합을 하나로 묶어 마치 함수/모듈처럼 사용하는 기능이다.스토어드 프로시저를 사용하여 조건문, 반복문, 변수 선언 등의 조합을 통해 복잡한 비즈니스 로직을 처리할 수 있다.MySQL에서는 프로시저를 직접 수정할 수 없기 때문에
MySQL에서 트리거는 데이터베이스에서 테이블에 입력, 수정, 삭제 등의 이벤트가 발생되었을 때 실행되는 프로시저다.(트리거는 로그 기록용도로 많이 사용)특이점으로 MySQL의 트리거는 DDL문을 수행할 때 동작하는 트리거를 제공되지 않는다.즉, MySQL의 트리거는
동적 쿼리는 SQL 쿼리문 전체 또는 쿼리 내 특정 값(테이블명, 조건절 등)을 변수로 받아 실행할 수 있는 유연한 SQL 작성 방식이다.이러한 동적 쿼리는 SQL Injection에 취약하며, 문법 오류를 검사하기 어렵다.(변수에 원치 않는 값이 들어갈 경우 문제 발
✅ MySQL 엔진 MySQL의 구조는 아래와 같다.