my_bool mysql_change_user(MYSQL *mysql, const char
*user, const char *password, const char *db)
説明
ユーザーを変えて、db
によって規定されたデータベースを、mysql
によって規定された接続上の(現)デフォルトデータベースになるように仕向けてください。次のクエリーの中では、このデータベースは明確なデータベース規定者を含まないテーブルリファレンスのためのデフォルトとなります。
接続されたユーザーを認証することができないか、当該ユーザーがデータベースを使う許可を得ていない場合、mysql_change_user()
は失敗します。この場合、ユーザーとデータベースは変更されません。
デフォルトデータベースを持ちたくない場合、db
パラメ-タをNULL
にセットすることができます。
このコマンドは状態を新しい接続をしたかのようにリセットします。(項23.2.13. 「自動再接続挙動の管理」を参照してください。)それは常に、アクティブな取引の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)); }