37 if ( !$status->isOK() ) {
41 $conn = $status->getDB();
46 if ( $this->getOption(
'CreateDBAccount' ) ) {
52 'password' => $password,
58 $grantableNames[] = $this->buildFullUserName( $conn, $dbUser, $server );
64 $grantableNames[] = $this->buildFullUserName( $conn, $dbUser, $server );
72 'localhost.localdomain',
76 $createHostList = array_unique( $createHostList );
77 $escPass = $conn->addQuotes( $password );
79 foreach ( $createHostList as $host ) {
80 $fullName = $this->buildFullUserName( $conn, $dbUser, $host );
81 if ( !$this->userDefinitelyExists( $conn, $host, $dbUser ) ) {
83 $conn->begin( __METHOD__ );
84 $conn->query(
"CREATE USER $fullName IDENTIFIED BY $escPass", __METHOD__ );
85 $conn->commit( __METHOD__ );
86 $grantableNames[] = $fullName;
87 }
catch ( DBQueryError $dqe ) {
88 if ( $conn->lastErrno() == 1396 ) {
90 $conn->rollback( __METHOD__ );
91 $status->warning(
'config-install-user-alreadyexists', $dbUser );
92 $grantableNames[] = $fullName;
97 $conn->rollback( __METHOD__ );
98 $status->warning(
'config-install-user-create-failed', $dbUser, $dqe->getMessage() );
102 $status->warning(
'config-install-user-alreadyexists', $dbUser );
103 $grantableNames[] = $fullName;
111 foreach ( $grantableNames as $name ) {
113 $conn->begin( __METHOD__ );
114 $conn->query(
"GRANT ALL PRIVILEGES ON $dbAllTables TO $name", __METHOD__ );
115 $conn->commit( __METHOD__ );
116 }
catch ( DBQueryError $dqe ) {
117 $conn->rollback( __METHOD__ );
118 $status->fatal(
'config-install-user-grant-failed', $dbUser, $dqe->getMessage() );