• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 1. MySQL Connector / ODBC
    2. MySQL Connector/Net
    3. MySQL Connector/J
    4. MySQL Connector/C++
    5. MySQL Connector/C
    6. MySQL Connector/Python
    7. libmysqld, the Embedded MySQL Server Library
    8. MySQL C API
    1. MySQL C API 구현
    2. MySQL Server MySQL Connector/C 동시 설치
    3. C API 클라이언트 프로그램 예제
    4. Building and Running C API Client Programs
    5. C API Data 구조
    6. C API Function 개요
    7. C API Function 설명
    1. mysql_affected_rows()
    2. mysql_autocommit()
    3. mysql_change_user()
    4. mysql_character_set_name()
    5. mysql_close()
    6. mysql_commit()
    7. mysql_connect()
    8. mysql_create_db()
    9. mysql_data_seek()
    10. mysql_debug()
    11. mysql_drop_db()
    12. mysql_dump_debug_info()
    13. mysql_eof()
    14. mysql_errno()
    15. mysql_error()
    16. mysql_escape_string()
    17. mysql_fetch_field()
    18. mysql_fetch_field_direct()
    19. mysql_fetch_fields()
    20. mysql_fetch_lengths()
    21. mysql_fetch_row()
    22. mysql_field_count()
    23. mysql_field_seek()
    24. mysql_field_tell()
    25. mysql_free_result()
    26. mysql_get_character_set_info()
    27. mysql_get_client_info()
    28. mysql_get_client_version()
    29. mysql_get_host_info()
    30. mysql_get_proto_info()
    31. mysql_get_server_info()
    32. mysql_get_server_version()
    33. mysql_get_ssl_cipher()
    34. mysql_hex_string()
    35. mysql_info()
    36. mysql_init()
    37. mysql_insert_id()
    38. mysql_kill()
    39. mysql_library_end()
    40. mysql_library_init()
    41. mysql_list_dbs()
    42. mysql_list_fields()
    43. mysql_list_processes()
    44. mysql_list_tables()
    45. mysql_more_results()
    46. mysql_next_result()
    47. mysql_num_fields()
    48. mysql_num_rows()
    49. mysql_options()
    50. mysql_options4()
    51. mysql_ping()
    52. mysql_query()
    53. mysql_real_connect()
    54. mysql_real_escape_string()
    55. mysql_real_query()
    56. mysql_refresh()
    57. mysql_reload()
    58. mysql_rollback()
    59. mysql_row_seek()
    60. mysql_row_tell()
    61. mysql_select_db()
    62. mysql_set_character_set()
    63. mysql_set_local_infile_default()
    64. mysql_set_local_infile_handler()
    65. mysql_set_server_option()
    66. mysql_shutdown()
    67. mysql_sqlstate()
    68. mysql_ssl_set()
    69. mysql_stat()
    70. mysql_store_result()
    71. mysql_thread_id()
    72. mysql_use_result()
    73. mysql_warning_count()
    8. C API Prepared Statements
    9. C API Prepared Statement Data 구조
    10. C API Prepared Statement 함수 개요
    11. C API Prepared Statement 함수 설명
    12. C API Threaded 함수 설명
    13. C API 임베디드 서버 함수 설명
    14. C API Client Plugin 함수
    15. C API를 사용하는 경우 일반적인 질문과 문제
    16. 자동 재 연결 동작 제어
    17. 여러 명령문 실행 C API 지원
    18. C API Prepared Statement 문제
    19. C API Prepared Statement date 및 time 값 처리
    20. C API의 Prepared CALL Statements 지원
    9. MySQL PHP API
    10. MySQL Perl API
    11. MySQL Python API
    12. MySQL Ruby APIs
    13. MySQL Tcl API
    14. MySQL Eiffel Wrapper
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

23.8.7.53 mysql_real_connect()

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)

설명

mysql_real_connect() 는 호스트 에서 실행중인 MySQL 데이터베이스 엔진에 연결을 시도합니다. mysql_real_connect() 는 유효한 MYSQL 연결 핸들 구조를 필요로하는 다른 모든 API 함수를 실행하기 전에 성공적으로 완료해야합니다.

매개 변수는 다음과 같이 지정합니다.

  • 첫 번째 매개 변수로 기존의 MYSQL 구조의 주소를 지정합니다. mysql_real_connect() 를 호출하기 전에 mysql_init() 를 호출하여 MYSQL 구조를 초기화합니다. mysql_options() 를 호출하여 많은 연결 옵션을 변경할 수 있습니다. 섹션 23.8.7.49 "mysql_options ()" 를 참조하십시오.

  • host 의 값은 호스트 이름 또는 IP 주소를 지정할 수 있습니다. host 가 NULL 또는 문자열 "localhost" 인 경우 로컬 호스트로의 연결로 간주됩니다. Windows의 경우 서버에서 공유 메모리 연결이 활성화되어있는 경우 클라이언트는 공유 메모리 연결을 사용하여 연결합니다. 그렇지 않은 경우에는 TCP / IP가 사용됩니다. Unix에서는 클라이언트는 Unix 소켓 파일을 사용하여 연결합니다. 로컬 연결에서는 mysql_options() 에 MYSQL_OPT_PROTOCOL 또는 MYSQL_OPT_NAMED_PIPE 옵션에서 사용할 연결 유형에도 영향을 미칠 수 있습니다. 연결 유형이 서버에서 지원해야합니다. Windows에서 "." 의 host 값은 서버에서 명명 된 파이프 연결이 활성화되어있는 경우, 클라이언트는 명명 된 파이프를 사용하여 연결합니다. 명명 된 파이프 연결이 활성화되어 있지 않으면 오류가 발생합니다.

  • user 파라미터는 사용자의 MySQL 로그인 ID가 포함됩니다. user 가 NULL 또는 빈 문자열 "" 인 경우, 현재 사용자가 예상됩니다. Unix에서 이것은 현재 로그인 이름입니다. Windows ODBC에서는 현재 사용자 이름을 명시 적으로 지정해야합니다. 제 23 장 "Connector 및 API ' 의 Connector / ODBC 섹션을 참조하십시오.

  • passwd 파라미터에는 user 의 암호가 포함됩니다. passwd 가 NULL 이면 빈 (빈) 암호 필드를 가진 사용자의 user 테이블의 항목 만 일치를 확인합니다. 이렇게하면 데이터베이스 관리자는 사용자가 암호를 지정하고 있는지 여부에 따라 사용자가 다른 권한을 얻을 같은 MySQL 권한 시스템을 설정할 수 있습니다.

    참고

    mysql_real_connect() 를 호출하기 전에 패스워드를 암호화하려고하지 마십시오. 비밀번호 암호화는 클라이언트 API에 의해 자동으로 처리됩니다.

  • user 및 passwd 매개 변수는 MYSQL 객체에 구성되는 문자 세트를 사용합니다. 기본적으로 이것은 latin1 이지만, 연결 전에 mysql_options(mysql, MYSQL_SET_CHARSET_NAME, " charset_name ") 을 호출하여 변경할 수 있습니다.

  • db 는 데이터베이스 이름입니다. db 가 NULL 이 아닌 경우, 연결은 기본 데이터베이스를이 값으로 설정합니다.

  • port 가 0이 아닌 경우, 값은 TCP / IP 연결 포트 번호로 사용됩니다. host 매개 변수는 연결의 종류를 결정합니다.

  • unix_socket 가 NULL 이 아닌 경우, 문자열은 사용하는 소켓 또는 명명 된 파이프를 지정합니다. host 매개 변수는 연결의 종류를 결정합니다.

  • client_flag 값은 보통 0이지만, 특정 기능을 활성화하기 위해 다음 플래그의 조합으로 설정할 수 있습니다.

    플래그 이름 플래그 설명
    CAN_HANDLE_EXPIRED_PASSWORDS 클라이언트는 만료 된 암호를 처리 할 수​​ 있습니다. 자세한 내용은 섹션 6.3.6 "암호 만료 및 샌드 박스 모드" 를 참조하십시오. 이 옵션은 MySQL 5.6.10에서 추가되었다.
    CLIENT_COMPRESS 압축 프로토콜을 사용합니다.
    CLIENT_FOUND_ROWS 변경된 행의 수가 아니라, 발견 된 (일치) 행의 수를 돌려줍니다.
    CLIENT_IGNORE_SIGPIPE 클라이언트 라이브러리 SIGPIPE 시그널 핸들러의 설치를 방해합니다. 이것은 응용 프로그램이 이미 설치된 핸들러와의 충돌을 피하기 위해 사용할 수 있습니다.
    CLIENT_IGNORE_SPACE 함수 이름 뒤의 공백을 허용합니다. 모든 함수 이름을 예약어합니다.
    CLIENT_INTERACTIVE 연결을 닫을 때까지 interactive_timeout 초 ( wait_timeout 초가 아니라)의 비활성화를 허용합니다. 클라이언트 세션 wait_timeout 변수는 세션 interactive_timeout 변수의 값으로 설정됩니다.
    CLIENT_LOCAL_FILES LOAD DATA LOCAL 처리를 활성화합니다.
    CLIENT_MULTI_RESULTS 서버에 클라이언트는 여러 문을 실행 또는 저장 프로 시저에서 여러 결과 집합을 처리 할 수​​ 알립니다. CLIENT_MULTI_STATEMENTS 이 활성화되어있는 경우이 플래그는 자동으로 활성화됩니다. 이 플래그에 대한 자세한 내용은이 표 다음에있는 참고를 참조하십시오.
    CLIENT_MULTI_STATEMENTS 서버에 클라이언트는 단일 문자열 ( " ; "으로 구분 된) 여러 문을 보낼 수 있음을 알려줍니다. 이 플래그가 설정되어 있지 않은 경우, 다중 문 실행이 비활성화됩니다. 이 플래그에 대한 자세한 내용은이 표 다음에있는 참고를 참조하십시오.
    CLIENT_NO_SCHEMA db_name.tbl_name.col_name 구문을 허용하지 않습니다. 이것은 ODBC 용입니다. 사용자가 그 구문을 사용하면 파서 오류를 생성합니다. 이것은 특정 ODBC 프로그램에서 버그 트랩에 도움이됩니다.
    CLIENT_ODBC 사용되지 않습니다.
    CLIENT_SSL SSL (암호화 프로토콜)를 사용합니다. 응용 프로그램에서이 옵션을 설정하지 마십시오. 그것은 클라이언트 라이브러리 내부적으로 설정됩니다. 대신 mysql_real_connect() 를 호출하기 전에 mysql_ssl_set() 를 사용합니다.
    CLIENT_REMEMBER_OPTIONS mysql_options() 에 대한 호출에 지정된 옵션을 기억합니다. 이 옵션을 사용하지 않으면 mysql_real_connect() 가 실패했을 경우 다시 연결을 시도하기 전에 mysql_options() 호출을 반복해야합니다. 이 옵션을 사용하면 mysql_options() 호출을 반복 할 필요가 없습니다.

프로그램에서 CALL 문을 사용하여 저장 프로 시저를 실행하는 경우 CLIENT_MULTI_RESULTS 플래그가 활성화되어 있어야합니다. 이것은 각 CALL 에 의해 프로 시저 내에서 실행되는 문에 의해 반환 될 수있는 결과 세트 이외에 호출 상태를 나타 내기위한 결과가되기 때문입니다. CALL 는 여러 결과를 반환 할 수 있기 때문에 mysql_next_result() 를 호출하는 루프를 사용하여 그들을 처리하고 그 이상의 결과가 있는지를 판단합니다.

CLIENT_MULTI_RESULTS 는 mysql_real_connect() 를 호출 할 때 CLIENT_MULTI_RESULTS 플래그 자체를 전달하여 명시 적으로 또는 CLIENT_MULTI_STATEMENTS 을 전달하여 암시 적으로 사용하는 (따라서 CLIENT_MULTI_RESULTS 도 적용됩니다) 수 있습니다. MySQL 5.6에서는 CLIENT_MULTI_RESULTS 은 기본적으로 활성화되어 있습니다.

CLIENT_MULTI_STATEMENTS 또는 CLIENT_MULTI_RESULTS 을 활성화 한 경우, 그 이상의 결과가 있는지를 판단하기 위해 mysql_next_result() 를 호출하는 루프를 사용하여 mysql_query() 또는 mysql_real_query() 에 대한 모든 호출의 결과를 처리 합니다. 예를 들어, 섹션 23.8.17 "여러 문 실행의 C API 지원" 을 참조하십시오.

일부 매개 변수는 mysql_real_connect() 호출에서 명시적인 값에서 아니라 옵션 파일에서 값을 검색 할 수 있습니다. 이렇게는 mysql_real_connect() 를 호출하기 전에 MYSQL_READ_DEFAULT_FILE 또는 MYSQL_READ_DEFAULT_GROUP 옵션을 사용하여 mysql_options() 를 호출합니다. 그 후, 옵션에서 읽은 매개 변수에 대해 mysql_real_connect() 를 호출하면 "no-value"값을 지정합니다.

  • host 에 대해 NULL 또는 빈 문자열 ( "" ) 값을 지정합니다.

  • user 대해 NULL 또는 빈 문자열 값을 지정합니다.

  • passwd 에 대해 NULL 값을 지정합니다. (암호는 mysql_real_connect() 호출의 빈 문자열의 값은 옵션 파일에서 재정의 할 수 없습니다. 빈 문자열은 MySQL 계정이 빈 암호를 가질 필요가있는 것을 명시 적으로 나타 내기 때문에 입니다.)

  • db 대해 NULL 또는 빈 문자열 값을 지정합니다.

  • port 에 0의 값을 지정합니다.

  • unix_socket 대해 NULL 값을 지정합니다.

매개 변수 옵션 파일에 값이 없으면이 섹션 앞부분의 설명에 나타낸 바와 같이, 기본값이 사용됩니다.

반환 값

연결이 성공하면 MYSQL* 연결 핸들 연결이 실패한 경우 NULL . 연결이 성공하면 반환 값은 첫 번째 매개 변수의 값과 동일합니다.

오류
  • CR_CONN_HOST_ERROR

    MySQL 서버에 연결하는 데 실패했습니다.

  • CR_CONNECTION_ERROR

    로컬 MySQL 서버에 연결하는 데 실패했습니다.

  • CR_IPSOCK_ERROR

    IP 소켓의 작성에 실패했습니다.

  • CR_OUT_OF_MEMORY

    메모리 부족.

  • CR_SOCKET_CREATE_ERROR

    Unix 소켓의 작성에 실패했습니다.

  • CR_UNKNOWN_HOST

    호스트 이름의 IP 주소 검색에 실패했습니다.

  • CR_VERSION_ERROR

    다른 프로토콜 버전을 사용하는 클라이언트 라이브러리가 서버에 연결 시도에서 발생한 프로토콜 불일치.

  • CR_NAMEDPIPEOPEN_ERROR

    Windows에서 명명 된 파이프 생성에 실패했습니다.

  • CR_NAMEDPIPEWAIT_ERROR

    Windows에서 명명 된 파이프의 대기에 실패했습니다.

  • CR_NAMEDPIPESETSTATE_ERROR

    Windows에서 파이프 핸들러의 취득에 실패했습니다.

  • CR_SERVER_LOST

    connect_timeout > 0에서 서버에 연결하는 데 connect_timeout 초 이상 걸린 경우 또는 init-command 의 실행 중에 서버가 중지했을 경우.

  • CR_ALREADY_CONNECTED

    MYSQL 연결 핸들은 이미 연결되어 있습니다.

예
MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}

mysql_options() 를 사용하여 MySQL 라이브러리는 누군가가 MySQL을 표준이 아닌 방법으로 설치 한 경우에도 프로그램이 작동하도록하는 my.cnf 파일의 [client] 및 [your_prog_name] 섹션을 읽기 합니다.

연결할 때 mysql_real_connect() 는 reconnect 플래그 ( MYSQL 구조의 일부)를 5.0.3 이전 API 버전에서는 1 값 이후 버전에서는 0 의 값으로 설정하십시오. 이 플래그의 1 의 값은 절단 된 연결을 위해 문을 실행할 수 없으면 포기하기 전에 서버에 다시 연결을 시도하는 것을 나타냅니다. mysql_options() 에 MYSQL_OPT_RECONNECT 옵션을 사용하여 다시 연결 동작을 제어 할 수 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved