MySQL 명령어 모음 – 초기 설정(셋팅)

Oracle 만 쓰다보니 MySQL은 1년에 한번 쓸까 말까 하는데,
그럴 때 마다 문서 찾아가며 하는 것이 답답했다.

항상 정리된 문서가 있으면 좋겠다. 싶었지만 “언제 그걸 다 정리하지~” 하며 시작을 못하던 일인데…
오늘부터 시작 하도록 한다. 조금 씩 정리하면서 발전시킨다.
이렇게 정리 해 두면 나와 비슷한 분들에게도 도움이 될 것이다.

주의사항

  • Linux 와 MySQL 을 구글검색으로만 쓰면 개발자가 작업을 했습니다.
  • 당연히 맞지 않는 부분도 있을 것입니다. 발견하시면 코멘트 주시면 감사하겠습니다.(다른 의견도 환영합니다.)

Database 단위 백업

mysqldump -uUSERID -pPASSWORD DATABASENAME > filename.sql
mysqldump -u사용자이름 -p비밀번호 -h 디비서버주소 디비이름 > filename.sql

새로운 MySQL에 로그인 해서 Database 만들고 계정 만들기

Database 만들고 계정을 만들어야 편리하게 계정을 만들 수 있다. 순서가 바뀌면 골치 아프다.
그리고, 빈 Database를 만들어 둬야 백업받은.sql 파일을 Import 할 수 있다.

./mysql -u root -p
create database MY_DATABASE_NAME;
CREATE DATABASE MY_DATABASE_NAME CHARACTER SET utf8 COLLATE utf8_bin;

# User 생성하고 패스워드 주고 권한까지 한방에 주도록 하자.
GRANT ALL PRIVILEGES ON MY_DATABASE_NAME.* TO MY_USER_ID@'%' IDENTIFIED BY 'MY_PASSWORD' WITH GRANT OPTION;
# 아래 방법은 localhost 권한만 생긴다. 하지말자. (console 에서만 가능. PhpmyAdmin 같은 것 불가)
GRANT ALL PRIVILEGES ON MY_DATABASE_NAME.* TO MY_USER_ID@localhost IDENTIFIED BY 'MY_PASSWORD' WITH GRANT OPTION;

FLUSH PRIVILEGES; //반영을 위해

.sql 파일 Import 하기

./mysql -u root -p MY_DATABASE_NAME < MY_SQL_FILE.sql

MySQL 재시동

위 작업들을 했으면, MySQL 재시동을 해야 반영이 되는 것들인지 잘 모르겠다. 아시는 분 계시면 코멘트 바랍니다.
아무튼 껐다 켜는 건 만고의 진리이니…

sudo mysqladmin -u root -p reload
혹은
sudo /etc/init.d/mysql restart

MySQL 이 Table/Column명 대소문자 구분하는 것 방지

  • MySQL for Windows : 대소문자 구분하지 않는다.
  • MySQL for Linux : 대소문자 구분 한다.

편리하게, 대소문자 구분을 없애버린다.
vi /etc/my.cnf

[mysqld]
lower_case_table_names=1

MySQL Workbench 에서 Tables Fetching 이라고만 나오면서 안되는 문제

서버에서 이렇게 입력 하면 된다.

mysql_upgrade -u root -p

나의 my.cnf 파일

vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# jongkwang for Upper/Lower
lower_case_table_names=1
# jongkwang for UTF-8
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

MySQL Backup & Restore

서버에서 이렇게 입력 하면 된다.

DB백업
mysqldump -u아이디 -p DB명 > 저장할파일명.sql

테이블 백업
mysqldump -u아이디 -p DB명 테이블명 > 저장할파일명.sql

테이블복사
create table 새로운테이블명 as select * from 복사할테이블명  
 
DB복원
mysql -u아이디 -p암호 --default-character-set=utf8 디비명 < 복원할파일명.sql