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()
는 연결된 사용자를 인증 할 수 없거나 데이터베이스를 사용할 권한이없는 경우에 실패합니다. 이 경우 사용자와 데이터베이스는 변경되지 않습니다.
기본 데이터베이스가 필요 없으면 NULL
의 db
매개 변수를 전달합니다.
이 함수는 새로운 연결을 설정하고 재 인증 된 것처럼 세션 상태를 재설정합니다. ( 섹션 23.8.16 "자동 재 연결 동작 제어" 를 참조하십시오.) 항상 활성 트랜잭션의 ROLLBACK
을 실행하고 모든 임시 테이블을 닫고 삭제 잠겨있는 모든 테이블 잠금을 해제합니다. 세션 시스템 변수가 해당 글로벌 시스템 변수의 값으로 재설정됩니다. 준비된 문이 해제되고 HANDLER
변수가 닫힙니다. GET_LOCK()
에 의해 취득 된 잠금이 해제됩니다. 이러한 효과는 사용자가 변경하지 않은 경우에도 발생합니다.
반환 값
성공의 경우는 제로. 오류가 발생한 경우 0이 아닌.
오류
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
데이터베이스 이름이 너무 깁니다.
Example
if (mysql_change_user(&mysql, "user", "password", "new_database")) { fprintf(stderr, "Failed to change user. Error: %s\n", mysql_error(&mysql)); }