본문 바로가기

Engineering/__01. Mysql

[Mysql] 기본

* Ver 5.7 에서는 /etc/mysql/my.cnf 대신 /etc/mysql/mysql.conf.d/mysqld.cnf 를 사용한다.

  bind-address 등의 설정도 물론 이곳으로 변경되었다.


  •  Database 생성

mysql> CREATE DATABASE DB1;



  • Database 삭제

mysql> DROP DATABASE DB1;



  • 사용자 추가

mysql> INSERT INTO mysql.user (Host, User, Password) VALUES('%', 'DB_User', PASSWORD('Password'));

      % -> 모든 호스트, 특정 호스트에서만 접근을 허용하려면 해당 ip를 입력한다. 

     로컬에서만 로그인이 가능하도록 하려면 localhost or 127.0.0.1 을 입력.


      유저 권한과 함께 입력하려면 

mysql> INSERT INTO mysql.user VALUES

   -> ('localhost','user1','userpasswd','N','N','N','N','N','N','N','N','N','N'

   -> ,'N','N','N','N','N','N','N','N','N','N' ,'N','','','','','0','0','0');

Query OK, 1 row affected (0.00 sec)


  • 사용자 삭제

mysql> DELETE FROM mysql.user WHERE user = 'user1';

  

  • DB에 사용자의 권한을 지정

mysql> INSERT INTO mysql.db VALUES

   -> ('localhost','yourDB','user1','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

    

  • DB에 사용자의 권한을 삭제 (DB에 지정된 사용자를 삭제)

mysql> DELETE FROM mysql.db WHERE user = 'user1';

  

  • 사용자 추가/삭제/변경 후 반영

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> 


  • update

UPDATE 테이블명 SET 필드명 = "value" WHERE 필드명 > "조건 값" 

조건 값보다 큰 필드의 레코드 값을 수정 


UPDATE 테이블명 SET 필드명 = "value" WHERE 필드명 <> "조건 값" 

조건 값을 제외한 모든 레코드 값을 수정 


UPDATE 테이블명 SET 필드명 = "value", 필드명2 = "value" WHERE 조건들

조건에 맞는 두개의 필드를 바꿈


UPDATE 테이블명 SET 필드명 = REPLACE(필드명, 'alpha', 'bravo')

필드의 값에 'alpha'라는 단어가 포함 되어 있다면 모두 'bravo'로 수정


UPDATE 테이블명 SET 필드명 = CONCAT(필드명,'bravo') WHERE 조건들

조건에 맞는 필드명의 값에 'bravo'단어를 덧붙임


  • delete

mysql> delete from tableA where code LIKE '%VALUE%';

mysql> delete from tableA where code NOT LIKE '%VALUE%';



  • select

select * from table명;


모든 table 에서 쿼리하려면

select * from information_schema.tables;


쿼리 결과를 파일로 추출하려면 

select * from tables

into outfile '/tmp/export.csv'

(아래는 상황에 따라)

CHARACTER SET euckr FIELDS TERMINATED BY ','

OPTIONALLY ENCLOSED BY '"'

ESCAPED BY '\\' LINES TERMINATED BY '\n';


  • Backup, Restore

# mysqldump -u root -p --all-databases > dump.sql  

# mysqldump -u root -p DB > dump.sql 


# mysql -u root -p DB < dump.sql


여러 개의 .sql 파일을 한번에 복원하려면 먼저 .sql 파일을 하나의 파일로 합친다.

현재 폴더에 .sql 만 남겨놓고 하위에 merge 폴더를 만든다. 그리고,

cat * > merge.sql 로 만들어 여려 개의 .sql 파일을 하나의 .sql 파일로 합친다. 

그리고 merge.sql 파일을 이용해 한번에 복원한다 ( 더 좋은 방법은? )


  • repair

table 이 깨진 경우 복구하려면

REPAIR TABLE table명;



  • .sql 수행

mysql> use DB1;                       (.sql 수행을 적용할 DB 선정)

mysql> source /tmp/abc.sql 수행




'Engineering > __01. Mysql' 카테고리의 다른 글

[TIP]  (0) 2022.08.22
CSV 파일 import  (0) 2020.07.29
errorcode[1292]\n errormsg:Incorrect datetime value: \'0000-00-00 00:00:00\' for column \  (0) 2018.07.30