MYSQL 컬럼 Default 설정 (DATETIME)

> Datetime type의 컬럼 Create 문에 아래와 같이 사용함으로 Default 값을 설정할 수 있다. (현재 timestamp)

FRST_RGST_DTTM   DATETIME DEFAULT   CURRENT_TIMESTAMP

LAST_UPDT_DTTM   DATETIME ON UPDATE CURRENT_TIMESTAMP

 

> DEFAULT CURRENT_TIMESTAMP

현재 Timestamp 값을 Insert 시점에 기본값으로 Set 한다.

 

> ON UPDATE CURRENT_TIMESTAMP

해당 row가 Update될 경우 자동으로 해당 시점의 Timestamp 값으로 set 된다.

 

> 기타

  1. 2가지를 병행 기재 함으로 Insert / Update 될 경우 자동 설정을 모두 취할 수 있다.
  2. 단, Java – Hibernate 와 같은 ORM 과 함께 사용할 경우 Entity Class에 @DynamicInsert, @DynamicUpdate  와 같은 어노테이션을 사용하여, Default를 자동 Set하기 원하는 컬럼이 DML에 포함되지 않도록 한다. (DML에 포함될 경우 NULL로 INSERT/UPDATE 될 수 있다.)

 

참조:
http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html

MYSQL 원격 접속 허용 (linux)

> 오류 내용

Host ‘<ip address>’ is not allowed to connect to this MySQL server

 

> 확인 <user table>   (※ 아래와 같을 경우 localhost외의 접근이 불가능하다.)

mysql> SELECT Host,User,authentication_string FROM mysql.user
    -> ;
+-----------+------------------+-------------------------------------------+
| Host      | User             | authentication_string                     |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *80A443D4CF25B57EE480BA2EBD77D84C3957F0BB |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *3494532BAE0FF1A9EA7E724D617265518D876386 |
| localhost | wordpressuser    | *DC1D26CA63BEB884EF3C641A9B16FCAA9317713E |
+-----------+------------------+-------------------------------------------+
5 rows in set (0.00 sec)

 

> 수정 <user table에 허용 가능 host를 insert 한다>

모든 IP 허용
INSERT INTO mysql.user (host,user,authentication_string,ssl_cipher, x509_issuer, x509_subject) VALUES ('%','root',password('패스워드'),'','','');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

 

> BIND-ADRESS 변경

/etc/mysql/my.cnf    (or)  /etc/mysql/mysql.conf.d/mysqld.cnf

아래 line을 주석처리 하거나 (0.0.0.0) 으로 변경

bind-address = 127.0.0.1

 

> MYSQL 재시작

root# service mysql restart

 

MYSQL 기본 명령어

기본 명령어

 

> 접속 (on terminal)

mysql -u <username> -p <password> <dbname>
-u : 사용할 username 지정을 위한 option
-p : 사용할 password 지정을 위한 param, 만약 password 미입력시 prompt로 입력 가능하다.
본 option을 입력하지 않을 경우 user별 로그인 권한에 따라 로그인이 접속이 제한된다.

 

>  비밀번호변경

1. mysql> UPDATE user SET password=password(‘새비밀번호’) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;

2. mysql> SET PASSWORD FOR root=password(‘새비밀번호’);

 

> 유저 생성

1. 특정 Database에 대한 권한부여와 함께 유저를 생성한다.
mysql> GRANT ALL PRIVILEGES ON <dbname>.* TO <username>@’%’ IDENTIFIED BY ‘<password>’;

 

> Database 생성/조회/사용/삭제

1. 생성 – mysql> CREATE DATABASE <dbname>;

2. 조회 – mysql> SHOW DATABASES;

3. 사용 – mysql> USE <dbname>;

4. 삭제 – mysql> DROP DATABASE [IF EXISTS] <dbname>;