- Published on
- •👁️
MySQL 사용 방법
- Authors

- Name
- River
▶ 데이터베이스와 DBMS
mysql-settings
# MySQL 설치 및 설정 ## MySQL 설치 [windows OS] scoop 패키지 관리자를 이용하여 mysql 설치 > scoop install MySQL 서비스에 등록 mysqld --install "서비스명" > mysqld --install "MySQL" 서비스 시작 net start 서비스명 > net start MySQL (windows) 서비스 종료 net stop 서비스명 > net stop MySQL [mac] mysql 설치 > brew install mysql mysql 설치 후 root 암호 변경 > sudo mysql_secure_installation mysql 실행 > brew services start mysql > brew services stop mysql 또는 > mysql.server start > mysql.server stop [linux] mysql 설치 > sudo apt update > sudo apt install mysql-server > sudo systemctl status mysql > mysql -V mysql 설치 후 root 암호 변경 > sudo mysql_secure_installation mysql 실행 > service mysql start > service mysql stop > service mysql status ## mysql 서버에 접속하기 로컬 MySQL 서버에 접속 > mysql -u root -p > Enter password: 암호입력 원격 MySQL 서버에 접속 > mysql -h 서버주소 -u root -p > Enter password: 암호입력 ## mysql root 암호 변경 > alter user 'root'@'localhost' identified by '1111'; ## MySQL 사용자 추가 > CREATE USER '사용자아이디'@'서버주소' IDENTIFIED BY '암호'; 로컬에서만 접속할 수 있는 사용자를 만들기: > CREATE USER 'study'@'localhost' IDENTIFIED BY '1111'; => 이 경우 stidu 사용자는 오직 로컬(서버를 실행하는 컴퓨터)에서만 접속 가능한다. => 다른 컴퓨터에서 실행하는 MySQL 서버에 접속할 수 없다는 것을 의미한다. 원격에서만 접속할 수 있는 사용자를 만들기: > CREATE USER 'study'@'%' IDENTIFIED BY '1111'; => 이 경우 study 사용자는 원력에서만 접속 가능하다. ## MySQL 사용자 목록 조회 > select user from 데이터베이스명.테이블명; > select user from mysql.user; ## MySQL 데이터베이스 생성 > CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; > CREATE DATABASE studydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; ## MySQL 사용자에게 데이터베이스 사용 권한 부여 > GRANT ALL ON 데이터베이스명.* TO '사용자아이디'@'서버주소'; > GRANT ALL ON studydb.* TO 'study'@'localhost'; ## 데이터베이스 목록 조회 > show databases; ## 사용자 교체 > quit (프로그램 종료 후) > mysql -u study -p (다시 실행) ## 기본으로 사용할 데이터베이스 지정하기 > use 데이터베이스명 > use studydb; ## 데이터베이스의 전체 테이블 목록 조회 > show tables;
※ DBMS 도입 - 소개

- DBMS : Database 관리 S/W
- RDBMS (관계형 DBMS)
- Oracle, MS-SQL, DB2, MYSQL(오픈소스), MariaDB, PostgreSQL, Tibero, Cubrid, Altibase
- MongoDB, Redis
- RDBMS (관계형 DBMS)
- 데이터베이스 (DB : DataBase)
- 데이터베이스는 데이터의 집합이다.
- 검색, 갱신이 쉽도록 구조화
- 실시간 접근
- 동시 공유
- 데이터 중복 최소화
- 일관성, 무결성, 보안성
- 일관성 (규칙 준수)
- 규칙이나 제약 조건을 준수 ⇒ 데이터 신뢰성 확보
※ DBMS 도입 - MySQL 설치

MySQL 서버에 직접 접근할 수 없다. (만약 할 수 있었다면 외부 해커도 가능하니까) ⇒ Linux 서버를 통해 MySQL 서버로 접근한다. (외부 접근은 Linux가 방화벽으로 차단한다) ⇒ 그런데 Linux 서버에서는 CLI로 제어한다. 그러므로 개발자도 CLI 방식을 알아야 한다.
※ DBMS 도입 - DBMS 사용
1️⃣ 로그인 (서버 접속)
로컬 MySQL 서버에 접속

- 명령프롬프트 -mysql -u root -pbash C:\Users\BITCAMP>mysql -u root -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 Server version: 8.4.2 MySQL Community Server - GPL Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.-mysql: DBMS 클라이언트 --u: user ID --p: 암호 직접 입력
원격 MySQL 서버에 접속

mysql -h 서버주소 -u root -p
- mysql root 암호 변경
alter user 'root'@'localhost' identified by '1111';
- 서비스 시작 및 종료
- 명령프롬프트 (관리자 권한 실행)
system32$ net stop MySQL84 system32$ net start MySQL84 or (서비스 창에서 start, stop)
- 명령프롬프트 (관리자 권한 실행)
2️⃣ DBMS 사용자 등록

- 똑같은 아이디를 만들 수 있다
- 호스트 : 접속 허용 서버 (도메인, IP주소, % (All : 외부 모든 서버))
- 로컬에서만 접속할 수 있는 사용자를 만들기
CREATE USER 'study'@'localhost' IDENTIFIED BY '1111';- 이 경우 study 사용자는 오직 로컬(서버를 실행하는 컴퓨터)에서만 접속 가능한다.
- 다른 컴퓨터에서 실행하는 MySQL 서버에 접속할 수 없다는 것을 의미한다.
- 로그인
$ mysql -u study -p (비번 1111)
- 원격에서만 접속할 수 있는 사용자를 만들기
CREATE USER 'study'@'%' IDENTIFIED BY '2222'; CREATE USER 'study'@'%' IDENTIFIED BY '1111';- 이 경우 study 사용자는 원격에서만 접속 가능하다.
- 로그인
$ mysql -h 192.168.0.7 -u study -p (비번 2222)
- 사용자 교체
> quit (프로그램 종료 후) > mysql -u study -p (다시 실행)
사용자 삭제

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +------------------+-----------+ | user | host | +------------------+-----------+ | study | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | study | localhost | +------------------+-----------+ $ drop user 'study'@'localhost'; $ drop user 'study'@'%'; $ select user, host from mysql.user; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +------------------+-----------+ | user | host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
3️⃣ 데이터베이스 생성

> CREATE DATABASE studydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE DATABASE studydb
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
Collate: 문자열 정렬 규칙utf8_general_ci: UTF-8 인데 대소문자 구분 없음
- 데이터베이스 삭제

bash > drop database studydb;
4️⃣ 데이터베이스 사용 권한 설정

> GRANT ALL ON studydb.* TO 'study'@'localhost';
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Query OK, 0 rows affected (0.01 sec)
5️⃣ 데이터베이스 목록 조회

root 사용자의 데이터베이스
$ mysql -u root -p (비번 1111) $ show databases; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | studydb | | sys | | world | +--------------------+
study 사용자의 데이터베이스
$ mysql -u study -p (1111) $ show databases; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +--------------------+ | Database | +--------------------+ | information_schema | | performance_schema | | studydb | +--------------------+
6️⃣ 데이터베이스 사용 설정

- 기본으로 사용할 데이터베이스 지정하기
> use studydb; (이제 부터 쓸거야)- 지정하지 않으면 테이블 생성 등을 할 수 없다.
7️⃣ 테이블 목록 조회

- 기본으로 지정한 데이터베이스의 테이블
> show tables
8️⃣ 테이블 상세 조회

> describe 테이블명
> desc 테이블명 (실무에서 쓰는 것)
9️⃣ 사용자, 호스트 조회

로컬 사용자의 mysql 데이터베이스의 user 테이블
⇒ 현재까지의 사용자를 알 수 있다.
$ select user, host from user; ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +------------------+-----------+ | user | host | +------------------+-----------+ | study | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | study | localhost | +------------------+-----------+**
- 테이블에서 원하는 컬럼 조회

bash > select user from 데이터베이스명.테이블명; > select user, host from mysql.user;- 현재 데이터베이스면 데이터베이스명 생략 가능