Mysql: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
(새 문서: <br /> ==개요== 데이터베이스 중 하나. 어째서인지 <code>CREATE UNIQUE INDEX IF NOT EXISTS time ON coin_{} (time)</code>과 같은 명령이 안먹는다. 정신건강...)
 
126번째 줄: 126번째 줄:
|delete from 테이블명
|delete from 테이블명
|}
|}
=유저 관련=
<br />
{| 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)
=이외 팁=
=이외 팁=
==백업과 복원==
==백업과 복원==
229번째 줄: 161번째 줄:
정상적으로 명령이 기입되면 백업 때와 동일하게 진행된다. 기존 데이터는 삭제된다.
정상적으로 명령이 기입되면 백업 때와 동일하게 진행된다. 기존 데이터는 삭제된다.
==자잘 팁==
==자잘 팁==
===자동실행===
보통 서버가 실행되면 자동 실행되지만, 그렇지 않은 경우 <code>sudo systemctl enable mysql</code>을 해보자.
===sql 직관적으로 보기===
===sql 직관적으로 보기===
HeidiSQL 등의 프로그램을 사용하면 엑셀과 같은 화면으로도 볼 수 있다.
HeidiSQL 등의 프로그램을 사용하면 엑셀과 같은 화면으로도 볼 수 있다.
===엑셀로 sql 내용물 보기===
===엑셀로 sql 내용물 보기===

2022년 10월 21일 (금) 10:32 판


개요

데이터베이스 중 하나.

어째서인지 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 제한조건, ....)
테이블 이름 제한 실수하기 쉬운 순서대로 나열해 보았다.
  1. 반드시 문자로 시작.(많은 사람들이 숫자로 시작하는 테이블을 만드는 실수를 한다.)
  2. 오라클에서 사용되는 예약어나 다른 객체명과 중복불가(TRUE 같은 것들은 사용 불가.)
  3. 1~30자 까지 가능함.
  4. A~Z까지의 대소문자와 0~9까지의 숫자, 특수기호는 (_, $, #)만 포함할 수 있음.
  5. 공백허용 안됨.
테이블 데이터형 종류
변수타입 설명
longtext 여러 글자 텍스트.
DATETIME 시간 데이터.
FLOAT 실수
INT 정수

데이터 입력, 제거

의도 설명 방법
테이블 안에 데이터 입력 해당값은 따옴표, 쌍따옴표로 둘러 기입해준다. insert into 테이블명 values('값', '값2', ...)
테이블 안의 행 제거 delete from 테이블명 where '필드명' = '거를 필드';
테이블 안의 행 전체삭제 delete from 테이블명


이외 팁

백업과 복원

DB백업

sql 파일로 백업한다.

mysqldump -u 사용자계정 -p 백업할DB명 > 저장할파일명.sql

'액세스가 거부되었습니다.'라는 문구가 나온다면 일반적으로 해당 경로에 저장이 불가하다는 의미. C:\Users\유저명\Downloads\파일명.sql 따위의 경로를 지정하자.

정상적으로 명령이 기입되면 패스워드를 입력하는 란이 나오고 백업이 진행된다.(용량이 큰 경우 멈춘 것처럼 보인다. 프롬프트 커서는 깜빡이고 있다.)

상황 방법
전체 DB를 한번에 저장하고자 할 때 DB이름을 넣는 대신 -A옵션을 준다.

--extended-insert

DB복구

복구할 때 복구할 DB가 미리 만들어져 있어야 한다.

mysql -u 사용자계정 -p 복구할DB명 < 저장한파일명.sql

정상적으로 명령이 기입되면 백업 때와 동일하게 진행된다. 기존 데이터는 삭제된다.

자잘 팁

sql 직관적으로 보기

HeidiSQL 등의 프로그램을 사용하면 엑셀과 같은 화면으로도 볼 수 있다.

엑셀로 sql 내용물 보기