Mysql
개요
데이터베이스 중 하나.
어째서인지 CREATE UNIQUE INDEX IF NOT EXISTS time ON coin_{} (time)
과 같은 명령이 안먹는다. 정신건강을 위해 MariaDB를 쓰자. MariaDB를 쓸 때 HeidiSQL 같은 편의기능도 함께 설치되어 편하다.
설치
설치할 때 root의 비밀번호를 설정한다. 잊지 않게끔 잘 기억해두자.
설치
운영체제 | 설명 | 방법 |
---|---|---|
리눅스 | sudo apt-get install mysql-server | |
윈도우 |
열기
운영체제 | 설명 | 방법 |
---|---|---|
우분투 | 루트권한으로 접근해야 사용할 수 있다.
sudo mysql 을 치면 MySQL모니터에 접근한다. |
|
윈도우 | cmd로 설치파일이 있는 경로로 이동한 후 명령 실행. | mysql.exe -u root -p |
시스템 재부팅
기본명령
MySQL 모니터 안에서 사용하는 명령이다.
명령의 마지막엔 ; 이 붙어야 함에 유의하자.
(대문자, 소문자 구분을 안하던데, 왜 대문자로 치는지 모르겠네;;)
의도 | 설명 | 방법 |
---|---|---|
데이터베이스 보기 | 모니터 안에서. | show DATABASES; |
DB생성 | CREATE DATABASE 데이터베이스이름; | |
DB삭제 | DROP DATABASE 데이터베이스명; | |
DB사용 | use 데이터베이스명; | |
테이블 보기 | SHOW TABLES; |
테이블 만들기
의도 | 설명 | 방법 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
테이블 만들기 | IF NOT EXISTS 조건을 걸어 테이블의 종류를 최신화하는 것도 가능하다. | CREATE TABLE IF NOT EXISTS 테이블명(변수 타입, 변수2 타입2 제한조건, ....) | ||||||||||
테이블 이름 제한 | 실수하기 쉬운 순서대로 나열해 보았다.
|
|||||||||||
테이블 데이터형 종류 |
|
데이터 입력, 제거
의도 | 설명 | 방법 |
---|---|---|
테이블 안에 데이터 입력 | 해당값은 따옴표, 쌍따옴표로 둘러 기입해준다. | insert into 테이블명 values('값', '값2', ...) |
테이블 안의 행 제거 | delete from 테이블명 where '필드명' = '거를 필드'; | |
테이블 안의 행 전체삭제 | delete from 테이블명 |
유저 관련
의도 | 설명 | 방법 |
---|---|---|
유저생성 | localhost 대신 해당 ip에서만 접속할 수 있게끔 제한할 수 있다. | CREATE USER '계정명'@'localhost' IDENTIFIED BY '비밀번호'; |
권한 주기 | ALL은 모든 권한을 주는 것. | GRANT ALL ON DB이름.* TO '계정명'@'localhost'; |
유저 정보 보기 | 유저의 호스트, 유저명, 인증방법을 볼 수 있다. | select Host,User,plugin FROM mysql.user; |
외부에서 접속(원격접속)
기본적으로 접속은 localhost에서만 가능하다. 외부접속을 위해선 2가지 과정이 필요하다.
과정 | 설명 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
외부에서 접속 가능한 계정 만들기 | mysql -u root -p 로 mysql을 실행한 후 SELECT User, Host, plugin FROM mysql.user; 를 쳐보면, Host가 localhost로 되어있을 것이다.
새로운 ip에 맞게 유저를 만들어주어야 한다.(같은 유저라도 호스트에 따라 다른 계정이 된다.)
| ||||||||||||||||||||
바인드주소 지우기 | cd /etc/mysql/mysql.conf.d 에서 mysqld.cnf 파일을 편집한다.(버전, 운영체제 버전에 따라 다를 수 있다.)
바인드 어드레스를 다음과 같이 주석처리한 후 저장. #bind-address = 127.0.0.1 이후 sudo service mysql restart |
mysql 포트 확인
mysql에 접속한 후 mysql> show global variables like 'port';
명령어로 사용하고 있는 포트번호를 알 수 있다.(일반적으로 3306)
이외 팁
백업과 복원
DB백업
sql 파일로 백업한다.
mysqldump -u 사용자계정 -p 백업할DB명 > 저장할파일명.sql
'액세스가 거부되었습니다.'라는 문구가 나온다면 일반적으로 해당 경로에 저장이 불가하다는 의미. C:\Users\유저명\Downloads\파일명.sql 따위의 경로를 지정하자.
정상적으로 명령이 기입되면 패스워드를 입력하는 란이 나오고 백업이 진행된다.(용량이 큰 경우 멈춘 것처럼 보인다. 프롬프트 커서는 깜빡이고 있다.)
상황 | 방법 | |
---|---|---|
전체 DB를 한번에 저장하고자 할 때 | DB이름을 넣는 대신 -A옵션을 준다. | |
--extended-insert
DB복구
복구할 때 복구할 DB가 미리 만들어져 있어야 한다.
mysql -u 사용자계정 -p 복구할DB명 < 저장한파일명.sql
정상적으로 명령이 기입되면 백업 때와 동일하게 진행된다. 기존 데이터는 삭제된다.
자잘 팁
자동실행
보통 서버가 실행되면 자동 실행되지만, 그렇지 않은 경우 sudo systemctl enable mysql
을 해보자.
sql 직관적으로 보기
HeidiSQL 등의 프로그램을 사용하면 엑셀과 같은 화면으로도 볼 수 있다.