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
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.