Azure: Wo ist der Standardbenutzer/-pass für die WordPress-Datenbank mit MySQL-In-App (Vorschau)?

Lesezeit: 4 Minuten

Benutzeravatar von LatentDenis
LatentDenis

Ich habe gerade einen von Azure gehosteten WordPress App Service gestartet und mich für die MySQL-In-App-Option (Vorschau) für die Datenbank entschieden. Für diejenigen, die sich dessen nicht bewusst sind, erlaubt mir dies, den MySQL-Server Seite an Seite mit meiner Webanwendung in derselben Umgebung auszuführen.

Ich habe jedoch ein Problem mit der Art und Weise, wie ich MySQL-Abfragen mache.

Ich möchte Code aus einem anderen PHP-Projekt wiederverwenden, in dem die MySQL-Aufrufe in Form von PDO-Anweisungen vorliegen, wie folgt:

try {
    $db = new PDO('mysql:host=localhost;dbname=localdb;charset=utf8',
                    'user',
                    'pass');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
catch(PDOException $ex) {
    echo "did not connect...";
}

$sth = $db->prepare("SELECT *FROM MyTable;");
$sth->execute();

Ich kann diese Anrufe nur tätigen, wenn ich einen Benutzernamen und ein Passwort dafür habe.

Das PHPMyAdmin-Seitenpanel sieht in der MySQL-In-App (Vorschau) so aus:

PHPMyAdmin-Seitenbereich für MySQL-In-App-Vorschau

Und wenn ich die Benutzerkonten hochziehe, sehe ich Folgendes:

PHPMyAdmin-Benutzerkonten

Ich bin verloren, wenn es darum geht, welchen Benutzer und Pass ich verwenden soll und ob ich überhaupt verwenden sollte localdb als meine db (dort sind alle WordPress-Tabellen aufgelistet).

Alles in allem versuche ich nur, mithilfe von PDO-Anweisungen Informationen aus der Datenbank abzurufen, und muss wissen, wie das geht.

  • Ich gehe davon aus, dass Azure ein Control Panel anbietet, um Ihre Dienste aufzulisten. Wenn ja, sollte es den Host/IP der Datenbank anzeigen – andernfalls sollten diese Informationen in phpMyAdmin sichtbar sein. Erstellen Sie für die Anmeldeinformationen ein neues Konto in phpMyAdmin.

    – Halber

    11. Januar 2017 um 22:33 Uhr

  • Hilft diese Antwort?

    – Halber

    11. Januar 2017 um 22:36 Uhr

Benutzeravatar von Aaron Chen
Aaron Chen

Die Verbindungszeichenfolge ist in zu sehen D:\home\data\mysql\MYSQLCONNSTR_localdb.txt. Sie können diese Datei über die Kudu-Debug-Konsole finden, auf die über zugegriffen werden kann https://<yourwebsitename>.scm.azurewebsites.net/DebugConsole.

Der Dateiinhalt sieht in etwa so aus:

Database=localdb;Data Source=127.0.0.1:54306;User Id=azure;Password=6#vWHD_$

Im Folgenden finden Sie ein Beispielcode-Snippet, das PDO verwendet, um MySQL In-App zu verbinden.

$dsn = 'mysql:dbname=localdb;host=127.0.0.1:54306;charset=utf8';
$user="azure";
$password = '6#vWHD_$';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit;
}

echo "Success: A proper connection to MySQL was made!";

Wichtige Aktualisierung:

Aus https://social.msdn.microsoft.com/Forums/azure/en-US/4c582216-bc1b-48b0-b80b-87ae540c3d05/php-azure-mysql-inapp-changed-ports-randomly

Eine VM kann mehrere WebApps hosten; daher mehrere In-App-MySQL-Prozesse. Wenn wir den MySQL-Prozess starten, versuchen wir, denselben Port wie zuvor zu verwenden. Es kann jedoch von anderen Diensten oder anderen In-App-MySQL übernommen werden. Dadurch kann sich der Port ändern. Darüber hinaus kann die Web-App von einer VM auf eine andere verschoben werden, und die verfügbaren Ports sind unterschiedlich.

Um die stabile Client-App zu schreiben, stellen Sie sicher, dass Sie die Verbindungsinformationen aus der env-Variablen lesen. Sehen Dies für mehr Details.

Wir sollten also die Verbindungszeichenfolge aus der env-Variablen in PHP wie folgt abrufen:

$connectstr_dbhost="";
$connectstr_dbname="";
$connectstr_dbusername="";
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
    if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
        continue;
    }
    
    $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
    $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
    $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
    $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

  • Nagel auf den Punkt und noch mehr! Perfekte Lösung, tolles Codebeispiel. Vielen Dank!

    – LatentDenis

    12. Januar 2017 um 13:48 Uhr

Benutzeravatar von Abdullah Tahan
Abdullah Tahan

Gehen Sie zu Konfiguration und fügen Sie dann eine Verbindung hinzu

Name = defaultConnection Wert = Database=your_database;Data Source=your_website.mysql.database.azure.com;User Id=your_username;Password=your_password

dann hat für mich suresh42326 geantwortet funktioniert

Für mich hat der Besuch von .azurewebsites.net mein Problem gelöst. Danach habe ich .scm.azurewebsites.net/phpmyadmin durchsucht, es wurde nicht nach dem Passwort gefragt.

https://github.com/projectkudu/kudu/issues/2238#issuecomment-427358981

/*Add at the begining of the file
if you want to connect to custom database then fill this variable  $connectstr_dbname="MY_CUSTOM_DB"; and comment or remove  $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value); from below code...
*/

$connectstr_dbhost="";
$connectstr_dbname="";
$connectstr_dbusername="";
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
    if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
        continue;
    }

    $connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
    $connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
    $connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
    $connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $connectstr_dbname);

/** MySQL database username */
define('DB_USER', $connectstr_dbusername);

/** MySQL database password */
define('DB_PASSWORD', $connectstr_dbpassword);

/** MySQL hostname : this contains the port number in this format host:port . Port is not 3306 when using this feature*/
define('DB_HOST', $connectstr_dbhost);

  • Warum haben Sie die Antwort oben einfach kopiert und eingefügt?

    – Ihr gesunder Menschenverstand

    26. Dezember 2017 um 12:53 Uhr

  • Lesen Sie die Top-Kommentare. Es erklärt, wie Sie eine benutzerdefinierte Datenbank verbinden können. Ich stand vor diesem Problem und löste es dann. Also dachte ich, es wird eine volle Hilfe für andere sein.

    – Dänischer Jamshed

    27. Dezember 2017 um 14:11 Uhr

1388710cookie-checkAzure: Wo ist der Standardbenutzer/-pass für die WordPress-Datenbank mit MySQL-In-App (Vorschau)?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy