Mysql 설치 및 데이터베이스 생성
1. linux 터미널에서 sudo apt-get install mysql-server
설치하다보면 mysql-server 패스워드 설정이 나오니 입력하자.
sudo mysql -p를 터미널에 입력해서 mysql 패스워드를 치고 정상적으로 실행되면 제대로 설치된 것이다.
2. mysql database 생성
CREATE DATABASE test_db default CHARACTER SET UTF8;
test_db라는 이름의 데이터베이스를 만든다. character set을 utf8로 둠으로써 한글을 사용할 수 있다.
3. database 목록보기
mysql 터미널에서 show databases;
4. database에 사용자 추가 및 접속
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost' IDENTIFIED BY 'test'; EXIT; mysql -u test_user -p USE test_db;
GRANT는 사용자에게 database 사용 권한을 적용하는 명령어다.
ALL PRIVILEGES는 database에 대한 모든 권한이다.
ON test_db.*는 test_db의 모든 테이블에 대한 것임을 나타낸다.
TO 'test_user'@'localhost'는 test_user라는 id의 유저에게 local에서만 접속할 수 있도록 하는것이다. 만약 모든곳에서 접속하게 하고 싶다면 'test_user'@'%'로 하자. 특정 아이피는 'test_user'@'xxx.xxx.xxx.xxx'로 설정한다.
IDENTIFIED BY 'test'는 사용자의 password를 test로 설정하는 것이다.
EXIT;는 현재 연결된 mysql을 닫는 것이다.
mysql -u test_user -p는 test_user라는 id로 로그인을 하는 것이다. 입력하고 난 뒤 비밀번호를 요구하므로 아까 설정한 test를 입력한다.
USE test_db;는 현재 로그인한 사용자가 test_db를 사용한다는 것이다. (사용자는 여러개의 database를 사용할 수 있다.)
5. table 생성
CREATE TABLE user ( uid BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, id VARCHAR(256) NOT NULL, pw VARCHAR(64) NOT NULL, date DATETIME DEFAULT CURRENT_TIMESTAMP, mod_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, nickname VARCHAR(64), PRIMARY KEY(uid), UNIQUE KEY(id), UNIQUE KEY(nickname) ) ENGINE=INNODB; DESCRIBE user;
user라는 이름의 테이블을 생성한다.
그 후 칼럼들에 대한 내용이 나열된다.
첫 째줄부터 보면 uid라는 이름의 column을 추가한다. 자료형은 BIGINT UNSIGNED이다. NOT NULL은 자료를 입력할 때 항상 값을 넣어줘야 함을 의미한다. AUTO_INCREMENT는 자료를 추가할때마다 자동으로 인덱스 증가함을 의미한다.
id, pw는 문자열 256, 64자 제한으로 정의되어있다.
date는 자료형이 DATETIME이고 DEFAULT는 아무런 값을 입력하지 않을 때 자동으로 입력되는 값이다. 여기선 현재 시간(CURRENT_TIMESTAMP)로 설정돼있다.
mod_date같은 경우 DEFAULT가 CURRENT_TIMESTAMP이고, 업데이트 시 CURRENT_TIMESTAMP를 입력하는 것으로 설정돼있다.
PRIMARY KEY(uid)는 uid를 primary key로 설정하는 것이다. primary key는 table 당 하나의 column에만 설정될 수 있다. primary key로 등록된 column은 중복된 값을 가질 수 없다.
UNIQUE KEY(id)는 id를 unique key로 설정하는 것이다. unique key로 지정된 column은 중복된 값을 가질 수 없다. table 내 여러개의 column에 지정할 수 있다.
ENGINE_INNODB;는 데이터 저장 구조를 선택한다는데 더 찾아봐야한다.
DESCRIBE user;는 user table의 구조를 확인할 때 사용하는 명령어다. 줄여서 desc user;만 입력해도 된다.
mysql 데이터 타입은 아래 링크에서 살펴보자.
http://ra2kstar.tistory.com/82