[MySQL] 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('새비밀번호');


일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.

사용자 추가/삭제
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';

위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.
추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.
아래 댓글에서 rukikuki님이 알려주셨습니다.
GRANT ALL PRIVILEGES ON testdb.* TO 'username'@'%' IDENTIFIED BY 'password' ;
처럼 'username' 이런식으로 홑따옴표를 username 에도 붙여야 하더군요..


불필요한 사용자 삭제는
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 [IF EXISTS] 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;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;

DESC는 내림차순 ASC는 오름차순.

mysql> SELECT * FROM grade WHERE korean < 90;

조건줘서 SELECT.

mysql> SELECT * FROM grade LIMIT 10;

결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 100, 10;

결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

UPDATE
mysql> UPDATE tablename SET col1=새값 WEHER 조건


DELETE
mysql> DELETE FROM tablename WEHRE 조건


mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.
$ mysql -E -u root -p mysql


mysql에서 발생한 오류나 경고 다시 보기
mysql> show errors;
mysql> show warnings;

by 권남 | 2004/10/06 13:34 | 데이터베이스 | 트랙백(5) | 핑백(1) | 덧글(10)

트랙백 주소 : http://kwon37xi.egloos.com/tb/1634694
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Linux Love at 2006/03/14 09:48

제목 : mysql 기본 명령어
[MySQL] MySQL 기본 명령어 정리 ...more

Tracked from netflix를 위한 공간 at 2008/01/09 18:19

제목 : mysql 간단한 명령어들.
http://kwon37xi.egloos.com/tb/1634694 mysql -uroot -p - root계정으로, 비밀번호를 입력하여 접근 show databases; - 현재 가진 데이터베이스들을 열어본다. desc db; - db의 내용을 보는 듯? select * from user; - 사용자들 목록을 볼 수 있다. create database ; - db_name이라는 데이터베이스 생성 ** 참고사항 mysql에서 tab을.....more

Tracked from JONGGYU.COM at 2008/02/19 18:02

제목 : MySQL 기본 명령어 정리
MySQL 기본 명령어 정리 출처 : http://kwon37xi.egloos.com/1634694 MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지...Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.설치는 Redhat 기본 제공 RPM으로 했다.데이터베이스 접속 $ mysql -u 사용자명 -p dbname설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 ......more

Tracked from [HANI]&JAY at 2009/03/02 16:19

제목 : my-sql]기본명령어 정리
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......more

Tracked from 나만의 세계 at 2009/06/01 11:45

제목 : mysql 기초
...more

Linked at 행복한.. 블로그 : MySQ.. at 2009/04/16 10:10

... mysql 명령어 http://kwon37xi.egloos.com/1634694설치 http://breakpoint.tistory.com/50 ... more

Commented by 내사랑리눅스 at 2006/03/14 09:48
정리를 잘 해 놓으셔서 트랙백 합니다. ^^
Commented by Hileejoy at 2006/10/02 09:03
이렇게 정리해 놓으면 스스로나 필요한 사람 모두에게 좋습니다. 멋집니다!
Commented by 가야 at 2006/10/17 23:27
감사합니다. 한눈에 쏙 들어오네요~
Commented by 박성훈 at 2007/12/13 15:24
자료 감사합니다.
Commented by 좋은정보 at 2008/01/20 16:24
감사합니다. ^^;
Commented by 배종규 at 2008/02/19 18:05
좋은 자료 감사합니다.
제 홈에 출처와 함께 올리고, 트랙백 전송했습니다.
감사합니다.
Commented by 김승환 at 2009/03/02 16:17
좋은 자료 감사합니다.

트랙백 합니다 ^^
Commented by rukikuki at 2009/09/03 16:04
이 포스팅으로 MySQL 명령어에 많은 도움을 받았던 유저입니다.

다름이 아니라. GRANT ALL PRIVILEGES 에서 사용자가 속해있는 호스트를 % 로 지정했을 때 속해있는 호스트의 ip 에 관계없이 접속할 수 있어야 하는데 그렇게 해도 접속이 안된다고 하셔서 첨언합니다.

GRANT ALL PRIVILEGES ON testdb.* TO 'username'@'%' IDENTIFIED BY 'password' ;

처럼 'username' 이런식으로 홑따옴표를 username 에도 붙여야 하더군요..

늘 건승하시고 주님안에서 원하시는 바 다 이루시길 기도합니다
Commented by 권남 at 2009/09/03 16:30
와~ 좋은 팁 감사드립니다.
Commented by 절대천황 at 2009/10/27 17:23
제 블로그에 출처 올리고서 긁어 갑니다.
좋은 정보 감사합니다 ^^
트랙백은 먼지 몰라서 못합니다.
혹시 문제 생기면 제 블로그에 글 남겨 주세요~

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶