Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


23.8.7.3 mysql_change_user()

my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)

説明

ユーザーを変更して、db で指定されたデータベースが、mysql で指定された接続でのデフォルト (現在) のデータベースになるようにします。その後のクエリーで、このデータベースは明示的なデータベース指定子を含まないテーブル参照のデフォルトになります。

mysql_change_user() は接続されたユーザーを認証できなかったか、データベースを使用する権限を持たない場合に失敗します。この場合、ユーザーとデータベースは変更されません。

デフォルトのデータベースが必要ない場合は、NULLdb パラメータを渡します。

この関数は、新しい接続を確立し、再認証されたかのように、セッションの状態をリセットします。(セクション23.8.16「自動再接続動作の制御」を参照してください。)それは常に、アクティブなトランザクションの ROLLBACK を実行し、すべての一時テーブルを閉じて削除し、ロックされているすべてのテーブルのロックを解除します。セッションシステム変数が、対応するグローバルシステム変数の値にリセットされます。プリペアドステートメントが解放され、HANDLER 変数が閉じられます。GET_LOCK() によって取得されたロックが解放されます。これらの効果は、ユーザーが変更しなかった場合でも発生します。

戻り値

成功の場合はゼロ。エラーが発生した場合、ゼロ以外。

エラー

mysql_real_connect() から取得する可能性があるものに加えて:

  • CR_COMMANDS_OUT_OF_SYNC

    コマンドが正しくない順番で実行されました。

  • CR_SERVER_GONE_ERROR

    MySQL サーバーが存在しなくなりました。

  • CR_SERVER_LOST

    サーバーへの接続がクエリー中に失われました。

  • CR_UNKNOWN_ERROR

    不明なエラーが発生しました。

  • ER_UNKNOWN_COM_ERROR

    MySQL サーバーはこのコマンドを実装しません (古いサーバーの可能性があります)。

  • ER_ACCESS_DENIED_ERROR

    ユーザーまたはパスワードが誤っています。

  • ER_BAD_DB_ERROR

    データベースが存在していません。

  • ER_DBACCESS_DENIED_ERROR

    ユーザーはデータベースに対するアクセス権を持っていませんでした。

  • ER_WRONG_DB_NAME

    データベース名が長すぎます。

if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
   fprintf(stderr, "Failed to change user.  Error: %s\n",
           mysql_error(&mysql));
}

User Comments
Sign Up Login You must be logged in to post a comment.