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()
          は、host で動作している MySQL
          データベースエンジンへの接続を確立しようとします。mysql_real_connect()
          が正常終了しなければ、他の API
          関数(mysql_get_client_info()
          を除く)を実行できません。
        
パラメータの指定方法を次に示します。
              1 つ目のパラメータには、既存の
              MYSQL
              構造体のアドレスを指定する。mysql_real_connect()
              を呼び出す前に、mysql_init()
              を呼び出して MYSQL
              構造体を初期化する必要がある。mysql_options()
              を使用すると、さまざまな接続オプションを変更できる。
              See 項11.1.3.40. 「mysql_options()」。
            
              host
              パラメータには、ホスト名または IP
              アドレスのどちらかを指定する。host
              に NULL または文字列
              "localhost"
              を指定した場合、ローカルホストに接続するものとみなされる。OS
              がソケット(Unix)または名前付きパイプ(Windows)をサポートしている場合、TCP/IP
              の代わりにそれらを使用してサーバに接続する。
            
              user パラメータにはユーザの
              MySQL ログイン ID
              を指定する。user に
              NULL または空文字列
              ""
              を指定した場合、現在のユーザを使用するものとみなされる。Unix
              では現在のログイン名が使用される。Windows
              で ODBC
              を使用する場合は、現在のユーザ名を明示的に指定する必要がある。
              See 項11.2.2. 「ODBC アドミニストレータのフィールドの設定方法」。
            
              passwd パラメータには
              user
              のパスワードを指定する。passwd
              に NULL
              を指定した場合、user
              テーブルのエントリのパスワードフィールドに何も指定されていない(空である)ユーザだけがチェック対象となる。データベース管理者は、この機能を使用して、パスワードを指定しているかどうかによってユーザに異なる特権を与えるという
              MySQL 特権システムをセットアップできる。
            
              注意:パスワードの暗号化はクライアント
              API
              によって自動的に処理されるので、mysql_real_connect()
              を呼び出す前にパスワードの暗号化は不要である。
            
              db
              パラメータにはデータベース名を指定する。db
              が NULL
              ではない場合、この値が接続のデフォルトデータベースとして設定される。
            
              port パラメータに 0
              以外の値を指定した場合、この値が TCP/IP
              接続のポート番号として使用される。注意:
              接続のタイプは host
              パラメータによって決定される。
            
              unix_socket パラメータに
              NULL
              以外の値を指定した場合、この文字列がソケットまたは名前付きパイプに使用される。注意:
              接続のタイプは host
              パラメータによって決定される。
            
              client_flag パラメータには通常
              0
              を指定するが、極めて特殊な状況では以下に示すフラグを組み合わせて指定できる。
            
| フラグ名 | フラグの説明 | 
| CLIENT_COMPRESS | 圧縮プロトコルを使用。 | 
| CLIENT_FOUND_ROWS | 影響を受けたレコードの数ではなく、検索結果の(一致した)レコードの数を返す。 | 
| CLIENT_IGNORE_SPACE | 関数名の末尾の空白を無視する。すべての関数名を予約語とする。 | 
| CLIENT_INTERACTIVE | アイドル状態が( wait_timeout秒ではなく)interactive_timeout秒継続したら接続をクローズする。 | 
| CLIENT_LOCAL_FILES | LOAD DATA LOCALの処理を有効にする。 | 
| CLIENT_MULTI_STATEMENTS | クライアントが複数行クエリ(‘ ;’
                      をステートメントの区切りとする)を送信する可能性があることをサーバに通知する。このフラグが設定されていない場合、複数行クエリは無効。MySQL
                      4.1 の新機能。 | 
| CLIENT_MULTI_RESULTS | クライアントが複数クエリまたはストアドプロシージャによって取得した複数の結果セットを処理できることをサーバに通知する。 CLIENT_MULTI_STATEMENTSが設定されている場合、このフラグは自動的に設定される。MySQL
                      4.1 の新機能。 | 
| CLIENT_NO_SCHEMA | db_name.tbl_name.col_nameという構文の使用を禁止する。これは
                      ODCB
                      向けの構文である。この構文を使用した場合、パーサでエラーが発生する。この構文は一部の
                      ODBC
                      プログラムでバグをトラップするために使用する。 | 
| CLIENT_ODBC | クライアントが ODBC
                      経由であることを通知する。この場合、 mysqldは ODBC
                      クライアントに適した処理を行う。 | 
| CLIENT_SSL | SSL(暗号化プロトコル)を使用する。アプリケーションプログラムではこのフラグを設定しないこと。これはクライアントライブラリが内部で設定するフラグである。 | 
戻り値
          接続が正常に確立した場合は
          MYSQL*
          接続ハンドル。接続が確立しなかった場合は
          NULL。接続が確立した場合、戻り値は
          1 つ目のパラメータの値と同じです。
        
エラー
              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
            
              サーバに接続する際に、異なるプロトコルバージョンのクライアントライブラリを使用したために、プロトコルの不一致が発生した。このエラーは、--old-protocol
              オプションを指定しないで起動した新しいバージョンのサーバに、非常に古いバージョンのクライアントライブラリを使用して接続を試みた場合に発生する可能性がある。
            
              CR_NAMEDPIPEOPEN_ERROR
            
Windows で名前付きパイプの作成に失敗した。
              CR_NAMEDPIPEWAIT_ERROR
            
Windows で名前付きパイプの待機に失敗した。
              CR_NAMEDPIPESETSTATE_ERROR
            
Windows でパイプハンドラの取得に失敗した。
              CR_SERVER_LOST
            
              connect_timeout
              が正の値であり、connect_timeout
              秒経過してもサーバに接続できなかった。または
              init-command
              の実行中にサーバがダウンした。
            
例
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 ライブラリが
          my.cnf ファイルの
          [client] および
          [your_prog_name]
          セクションを読み込むように設定しています。このように設定することで、非標準的な方法でセットアップされた
          MySQL
          に対してもこのプログラムが正常に動作することを保証します。
        
          注意:
          接続が確立したとき、mysql_real_connect()
          によって reconnect
          フラグ(MYSQL
          構造体の一部)の値が 1
          に設定されます。このフラグは、接続が切断されてクエリを実行できない場合に、そこでクエリを終了せずに、サーバへの再接続を試みることを意味します。
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

