๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL (Today I Learned)/Linux

[MySql] lib๋ฅผ ๋ฆฌ๋ˆ…์Šค C์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

728x90

MySql lib๋ฅผ ๋ฆฌ๋ˆ…์Šค C์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

์ฝ˜์†”์—์„œ mysql ์ ‘์†๋ฐฉ๋ฒ•

  • ๋กœ์ฝœ ์„œ๋ฒ„์— ์ ‘์†

    • ๋ช…๋ น์–ด : mysql -u ๊ณ„์ •๋ช… -p
      • ex) mysql -u root -p

        image
  • ์›๊ฒฉ์ง€์— ์ ‘์†

    • ๋ช…๋ น์–ด : mysql -h ํ˜ธ์ŠคํŠธ์ฃผ์†Œ(ip) -P ํฌํŠธ๋ฒˆํ˜ธ -u ๊ณ„์ •๋ช… -p
      • ex) mysql -h 192.168.2.201 -P 22 -u root -p
  • ์›๊ฒฉ์ง€์˜ ํŠน์ • database์— ์ ‘์†

    • ๋ช…๋ น์–ด : mysql -h ํ˜ธ์ŠคํŠธ์ฃผ์†Œ(ip) - P ํฌํŠธ๋ฒˆํ˜ธ -u ๊ณ„์ •๋ช… -p ๋””๋น„์ด๋ฆ„
      • ex) mysql -h 192.168.2.201 -P 22 -u root -p userDB

mysql ์ ‘์†ํ•˜๊ธฐ

  • Mysql ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ db_lib ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฒ•

    image
  • ๊ฐ db_lib ๊ฒฝ๋กœ๋กœ export๋ฅผ ๋จผ์ € ์ง„ํ–‰

    $ export LD_LIBRARY_PATH=:/home/khnoh/mysql/db_lib
  • ์œ„์˜ ๋ฐฉ๋ฒ•์€ ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•  ๋•Œ ๋งˆ๋‹ค export ํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋œ๋‹ค.
  • vi ~/.bashrc bashrc๋Š” ๋ณ„์นญ(alias)๊ณผ bash๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ์–ดํ•˜๋Š” ์ง€์—ญ์ ์ธ ์‹œ์Šคํ…œ ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ํŒŒ์ผ๋กœ์จ, ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „ ์ˆ˜ํ–‰๋œ๋‹ค.

    export LD_LIBRARY_PATH=:/home/khnoh/mysql/db_lib๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
    image
  • C ํŒŒ์ผ ์ปดํŒŒ์ผ ํ•˜๋Š” ๋ฒ• ex) main.c
#include<stdio.h>
#include<stdlib.h>
#include<mysql.h>
#include<errno.h>

void main(int argc, char **argv){
    MYSQL *conn;
    MYSQL_RES *result;
    MYSQL_ROW row;

    char query_buffer[2048];

    conn = mysql_init(NULL);

    if(!mysql_real_connect(conn, "127.0.0.1", "root", "PASSWORD", NULL, 0, NULL, 0)){
        printf("Cannot connect");
        exit(1);
    }
    else {
        if (mysql_select_db(conn, "ausf")){
            printf("cannot use database");
            exit(1);
        }
    }

    sprintf(query_buffer, "%s", "show tables");
    if(mysql_query(conn, query_buffer)){
        printf("query faild : %s\n", query_buffer);
        exit(1);
    }

    result = mysql_use_result(conn);
    while((row = mysql_fetch_row(result)) != NULL)
        printf("%s \n", row[0]);

    mysql_free_result(result);
    mysql_close(conn);
}
  • include ๊ฒฝ๋กœ์™€ library๊ฒฝ๋กœ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€์ • / lmysqlclient ์ถ”๊ฐ€์ ์œผ๋กœ ์ž…๋ ฅํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

    $ gcc main.c -o main -I/home/khnoh/mysql/include -L/home/khnoh/mysql/db_lib -lmysqlclient

  • C API ์ž๋ฃŒํ˜•

    • MYSQL : Database์™€์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ฒด์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ C API ํ•จ์ˆ˜์—์„œ ์“ฐ์ธ๋‹ค.
    • MYSQL_RES : SELECT ๋“ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” query์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.
    • MYSQL_ROW : MYSQL_RES์—์„œ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ์”ฉ ๊ฐ’์„ ์–ป์–ด ์˜ฌ๋•Œ ์“ฐ์ด๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.
    • MYSQL_FIELD : ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ํ•„๋“œ์˜ ํƒ€์ž… ๋“ฑ ํ•„๋“œ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.
  • ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋ชจ์Šต
    image

image

์ฐธ์กฐ

์ƒํ™œ์ฝ”๋”ฉ-MySQL
๋‚˜๊ธ‹ํ•œ ๊ฐœ๋ฐœ์ž-[MySQL] MySQL lib๋ฅผ ๋ฆฌ๋ˆ…์Šค C์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ
์ฝ”๋“œ๊ณต์žฅ-console์—์„œ MySQL ์ ‘์†๋ฐฉ๋ฒ•
AweSome Life-[Linux] ๋ฆฌ๋ˆ…์Šค C ์—์„œ mysql ์ ‘์†ํ•˜๊ธฐ

'TIL (Today I Learned) > Linux' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Linux] ํ™˜๊ฒฝ๋ณ€์ˆ˜  (0) 2021.08.27
[Linux] make์™€ Makefile  (0) 2021.08.25
[Linux] ๋ช…๋ น์–ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ  (0) 2021.08.25
[Linux] vi ํ™”๋ฉด ๋ถ„ํ•   (0) 2021.08.23
[Linux] shell script  (0) 2021.08.23