wisePocket

[MySQL] MySQL 시작 본문

Database/MySQL - RDBMS

[MySQL] MySQL 시작

ohnyong 2023. 8. 3. 22:51

RDBMS 관계형 데이터베이스 중 하나인 MySQL을 시작해보고자 한다.

사실 Oracle을 통해서 SQL을 배워왔기 때문에 상당히 익숙하게 느껴졌다. 특히 이럴 때 조심해야 한다. 오히려 좀 더 꼼꼼히 보고 특히 몰랐던 것, 햇갈렸던 것이 나오면 무조건 메모해야 한다. 이번 과정에서 이전 Oracle로 구성했던 것을 잠시 팀원들과 살펴봤는데 Join, PK, FK에 대해서 설명 해주기 어려웠다. 내 지식이 정리되지 않았기 때문인 것 같다.

이전 과정에서는 DB 서버 구축부터 계정 생성, 권한 부여, 테이블 생성, 컬럼 타입 및 조건 설정, 데이터 삽입 을 진행했었지만, 이번 과정에서는 가장 중요하고 초보자로써 필요한 READ에 집중되어 있다. 나는 자습을 통해서 서버 구축 및 접속, 계정 생성 등도 진행하고자 하지만 한 4일만에 READ부분을 진행해야 하기 때문에 조금 시간이 없어서 환경구축 과정과 나머지 Create, Update, Delete는 살짝 뒤로 미루어 두기로 한다. 사실 이미 Oracle을 통해서 접해봤엇기 때문에 중복되는 것이 많다. 하지만 DB설계, 데이터 타입에 대한 중요성, PK, FK에 대한 중요성을 그만큼 알기 때문에 무조건 다시 한번 정리를 하긴 해야 한다.

 

다행히 고문관 학생이 전 과정에서 Oracle을 죽어도 못깔겠다고 하는 바람에 MySQL을 함께 가르치신 선생님의 고생으로 나는 둘 다 쿼리문을 작성하고 설정하고 이런 과정을 비교하며 지켜 볼 수 있던 기회가 있었다. 그땐 Oracle만 배우면 되겠지라는 안일한 생각을 했지만, 지금 보니 확실히 한가지를 깊게 파는 대신 주변 여러가지를 확장해 나갈 생각으로 알고 있는것이 중요하다 느껴졌다.

 

우선 기본적으로 CLI로 설치하는 부분부터 자습을 하려한다. 인강도 중요하지만 이것도 나도 MySQL로 처음해보는 거라 Oracle과 비교해가면서 기억을 회상하고 또 잊혀진 부분들을 빨리 찾아내야 한다.


1. MySQL 설치 MacOS, Homebrew를 활용

과정에서는 Amazon DB서버를 호스트로 Cloud 시스템을 이용하지만 내 실습 파일이 아니기 때문에, 정석대로 내 로컬에 MySQL을 설치하는 것 부터 진행했다.

우선 기존 MySQL의 계정 비밀번호를 까먹어서 통째로 재설치가 필요했다.
1. 기존 MySQL이 실행 중 일수 있으니 서버를 꺼준다.
brew services stop mysql

2. launchctl을 등록 삭제
sudo launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist​

3. Homebrew로 삭제
brew uninstall --force mysql​

4. 세팅 로그 등을 삭제하기 위해서 아래 명령어를 한번씩 입력해준다.
sudo rm -rf /usr/local/mysql
sudo rm -rf /usr/local/bin/mysql
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/Cellar/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /tmp/mysql.sock.lock
sudo rm -rf /tmp/mysqlx.sock.lock
sudo rm -rf /tmp/mysql.sock
sudo rm -rf /tmp/mysqlx.sock
sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*​

5. 재설치
brew install mysql

6. MySQL 서버 실행(Homebrew 내)
brew services start mysql​

7. 재설치로 초기화 되었으니 root계정을 비번없이 접근 할 수 있다.
mysql -uroot​


8. MySQL 콘솔로 들어가지는 것을 확인했으면 exit; 엔터로 일단 빠져나온다. 초기 설정을 간단히 해줘야 한다.
mysql_secure_installation​
root 계정의 비밀번호 등을 묻는다. 비밀번호는 까먹지말고 왠만하면 기본값 세팅을 해준다.

9. 환경 변수 설정
MySQL을 터미널에서 모든 경로에서 인식 할 수 있게 설정해줘야 한다. 난 zsh를 사용하기 때문에 소스파일에 .zshrc를 바이 에디터로 접근한다.
vim ~/.zshrc​
난 모든 개발버전을 주석으로 관리하고 있다. 맨윗줄처럼 Path와 Home을 Homebrew로 MySQL이 설치된 경로를 찾아 입력해주면 된다. VI에디터 말고도 그냥 숨겨진 파일을 찾아서 아무 에디터로 열고 저장해도 된다. 그게더귀찮아서 VI로 그냥 들어가서 했다.


10. 우선 서버가 실행중인지부터 재확인하자.
brew services​

status 가 none이면 서버가 꺼진 상태다, 재실행해주자.

brew services start mysql​
11. 사용자 계정 하나를 만들어준다. root 계정은 슈퍼계정이라 버겁기도 하지만 일단 Mac 사용자 커맨드를 바로 입력해도 접근 할 수 있도록 해주는게 편하다. 아래처럼 환경변수는 인식하지만, 내 계정을 읽어내지못한다. 계정이 root말곤 없으니까.
내 Mac사용자 계정 커맨드로 만들어주면 쉽게 들어갈 수 있다. 일단 root으로 먼저 들어간다.
mysql -u root -p​
커맨드 라인이 mysql> 로 변한 것을 확인 할 수 있다. 서버내 db로 들어온 것이다. 실질적으로 table을 만들 수도 있고, 각종 sql명령문을 직접 써도 된다. 쿼리문을 gui에디터에 쓰고 실행하는 것과 동일한 행동일 뿐이다.
일단 내 이름의 계정을 만들고 모든 권한을 주려고 한다.
우선 마치 작업 폴더와 같은 DATABASE를 만들어줘야 한다.
CREATE DATABASE <DB_NAME> default CHARACTER SET UTF8; 
SHOW DATABASES;
닉네임의 DB가 생성 된 것을 볼 수 있다.
이제 DB를 선택하여 들어가보자.
use ohnyong;    // ohnyong database 선택​
create user 사용자ID
다음 처럼 내 이름의 계정이 생성되었다.
모든 권한을 부여한다. 부분적인 권한 부여는 검색해보시길~
grant all privileges on *.* to '사용자'@'localhost' identified by '비밀번호';​

권한을 반영해줘야 된다.
FLUSH PRIVILEGES;​

이제 아까 접속 안되던 내 Mac 계정으로 db에 접근 할 수 있게 되었다.

 

2. 간단하게 테이블 까지 만들어지나 까지 확인하자

우선 db목록 확인, 아까 만들었던 닉네임 DB로 접근하자. 내 연습 DB가 될 곳이다.
show databases;

테스트 테이블을 하나 만들어보자.

create table testtable(
	id int(11) not null auto_increment,
	name varchar(20) not null,
	job varchar(20) null,
	address varchar(100) null,
	height smallint,
	profile text null,
	date datetime,
	constraint testtable_pk primary key(id)
	);

순서대로 create 명령어를 통해 테이블 명칭을 지정할 수 있고 아래 내용은
컬럼명, 데이터 타입(크기), null 가능 여부, 기타이다.
auto_increment는 Oracle의 sequence와 유사한 기능이다.
맨 아랫줄은 제약조건으로 id를 pk로 지정했다.

show tables; #리스트보기
show desc testtable; #테이블 형태 보기

 

3. GUI로 이동한다.

이전에 Oracle Developer를 사용하면서 너무 구식이다라는 생각을 많이했다. 뭐 크게 상관은 없지만 이번에 디비버(DBeaver)를 처음 사용해보면서 마치 Eclipse 쓰다가 IntelliJ쓰는 기분처럼 편의성에 감탄하고 있다.
https://dbeaver.io/download/

새 접속환경을 localhost로 연결해준다. 아까 생성한 계정으로 변경해준다.
아래 처럼 내가 CLI로 생성한 테이블이 이미 자리잡고 있다.
결론은 동일하다는 것이다. CLI로 하던 GUI로 하던,,
근대 사람인데 편리한 도구가 있는데 GUI를 안 쓸 이유는 없지.
그런데 핵심은 CLI로도 익숙해지긴 해야하고 이 두개가 동일하다는 것을 아는 것이 중요하다 생각한다. 생각보다 이 개념을 모르는 사람이 많다. 독립된 프로그램인줄 알고 있다.
내가 만들 프로젝트가 100% 무조건  윈도우즈나 Mac 환경 일뿐것이라는 착각 하지 말자. 


연습 예제들을 또 모두 다루는 것은 어렵겠지만, 내가 특히 필요하다 생각하는 문구들은 정리해서 올리려고한다. 특히 Join문은 좀 집중해서 정리할 것이고, Oracle과 다른 부분(sequence vs auto_increment와 같은 차이점이 있는 부분은 햇갈릴 수 있으니 메모 기록을 남겨야 겠다.

우선 예제 테이블들을 내가 직접 만들 수 없으니
아마존 서버를 사용하는 강의 테이블을  csv로 추출하여 내 로컬 db에 임포트했다.


 

Download | DBeaver Community

Download DBeaver Community 23.1.3 Released on July 24th 2023 (Milestones). It is free and open source (license). Also you can get it from the GitHub mirror. DBeaver PRO 23.1 Released on June 12th, 2023 PRO version website: dbeaver.com Trial version is avai

dbeaver.io