MySQL 명령어 정리
MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지...
Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.
설치는 Redhat 기본 제공 RPM으로 했다.
데이터베이스 접속
$ mysql -u 사용자명 -p dbname설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.
$ mysql -u root mysql
비밀번호 변경
MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.다음 세가지 방법으로 비밀번호를 변경 할 수 있다.
- mysqladmin이용.
$ mysqladmin -u root password 새비밀번호
- update문 이용
$ mysql -u root mysql
mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
mysql> FLUSH PRIVILEGES; - Set Password 이용
SET PASSWORD FOR root=password('새비밀번호');
사용자 추가/삭제
mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는
데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면
GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.
mysql> DLETE FROM user WHERE user='username';
mysql> FLUSH PRIVILEGES;
데이터베이스 생성/보기
- 데이터베이스를 생성하고,
mysql> CREATE DATABASE dbname;
- 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;
- 특정 데이타베이스를 사용하겠다고 선언한다.
mysql> USE dbname;
- 쓸모 없으면 과감히 삭제한다.
mysql> DROP DATABASE [IF EXISTS] dbname;
IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.
테이블 생성/보기
- 테이블을 생성하고,
mysql> CREATE TABLE tablename (
column_name1 INT,
column_name2 VARCHAR(15),
column_name3 INT ); - 현재 데이타베이스의 테이블 목록을 보고
mysql> SHOW TABLES;
- 테이블 구조를 살펴본다.
mysql> EXPLAIN tablesname;
혹은
mysql> DESCRIBE tablename; - 이름을 잘못 지정했으면 이름을 변경할 수도 있다.
mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];
- 필요 없으면 삭제한다.
mysql> DROP TABLE tablename;
현재 상태 보기
mysql> status
--------------
mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)
Connection id: 26
Current database: study
Current user: study@localhost
Current pager: stdout
Using outfile: ''
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 min 59 sec
Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1
Open tables: 1 Queries per second avg: 0.021
--------------
INSERT
mysql> INSERT INTO tablename VALUES(값1, 값2, ...);혹은
mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);
SELECT
mysql> SELECT col1, col2, ... FROM tablename;컬럼명을 *로 하면 모든 컬럼 의미.
mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;컬럼의 이름을 바꿔서 출력.
mysql> SELECT * FROM tablename ORDER BY col1 DESC;DESC는 내림차순 ASC는 오름차순.
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;
mysql> SELECT * FROM grade WHERE korean < 90;조건줘서 SELECT.
UPDATE
mysql> UPDATE tablename SET col1=새값 WEHER 조건
DELETE
mysql> DELETE FROM tablename WEHRE 조건
==============================================================
==============================================================
==============================================================
==============================================================
MySql 명령어
1. 기본 명령어
//-- 데이터 베이스 리스트 보기
mysql> Show Databases;
//-- 데이터 베이스 사용하기
mysql> Use Test;
//-- 데이터 베이스 내의 테이블 보기
mysql> Show Tables;
//-- 데이터 베이스 생성하기
mysql>create database tradementor;
//-- 테이블 삭제 하기
mysql> drop table testtable1;
2. 사용자 등록 & 권한 설정 ( select, insert, update, delete, create, drop )
- INSERT 구문사용하기 ( Root 권한으로 설정됨 )
mysql>INSERT INTO user (Host, User, Pasword) VALUES('localhost', 'trade', PASSWORD('mentor'));
mysql>INSERT INTO db VALUES('%', 'tradementor', 'trade', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
mysql>FLUSH PRIVILEGES;
- GRANT 구문사용하기
//- localhost 에서 trade사용자에게 모든 데이터베이스의 모든 권한생성 password : mentor
mysql> grant all on *.* to 'trade'@'localhost' identified by 'mentor';
//- localhost 에서 trade사용자에게 tradementor 데이터베이스의 모든 권한생성 password : mentor
mysql> grant all on tradementor.* to 'trade'@'localhost' identified by 'mentor';
//- localhost 에서 trade사용자에게 tradementor 데이터베이스의 select 권한생성 password : mentor
mysql> grant select on tradementor.* to 'trade'@'localhost' identified by 'mentor';
//- localhost 에서 trade사용자에게 tradementor 데이터베이스의 update 권한생성 password : mentor
mysql> grant update on tradementor.* to 'trade'@'localhost' identified by 'mentor';
//- localhost 에서 trade사용자에게 tradementor 데이터베이스의 select,update 권한생성 password : mentor
mysql> grant select,update on tradementor.* to 'trade'@'localhost' identified by 'mentor';
mysql> flush privileges;
3. Mysql 원격 접속 설정
- Mysql은 기본적으로 localhost용으로 셋팅되어 있어 리모트로 접속할경우 아래와 같이
권한설정을 해줘야 한다..
mysql> grant all privileges on DB명.* to 아이디@접속아이피 identified by '패스워드';
mysql> flush privileges;
전체 아이피에 대해 접속을 허용할경우 접속아이피 대신 '%' 로 설정한다.
4. Root PassWord 분실시
1. # killall mysqld
2. #/usr/local/mysql/bin/mysqld_safe --skip_grant & (패스워드 없이 접근이 가능하도록)
3. # mysql
4. mysql> connect mysql; (root의 패스워드 수정할 때)
5. mysql> update user set password=password('new-password') where user='root'
6. mysql> flush privileges;
7. mysql> quit;
8. # killall mysqld
9. #/usr/local/mysql/bin/mysqld_safe &
5. backup
mysqldump -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// local 호스트가 아닌경우 호스트를 지정
mysqldump -h192.168.11.10 -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// 일반 port가 아닌 포트를 지정한 경우 socket 옵션
mysqldump --socket=(소켓모듈) -uID -p (TABLE명 혹은 DB명) > 백업할 파일이름.sql
// 테이블 구조만 백업받기
mysqldump -h host -u user -ppassword -d database > script.sql
6. restore
mysql -hDB서버명 -u유저명 -p패스워드 [복구할 테이터베이스명] < [외부로 저장된 파일명]