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