Microsoft Azure Open Source Development Support Team Blog

Support for Open Source Technologies on Microsoft Azure App Service

MySQL In-App Configuration for PHP Content Management Systems

Read more about MySQL In-App here.

Content Management Systems such as WordPress, Drupal, Joomla contain the database credentials within a configuration file. If you decide to use MySQL In-App for development purposes, you will quickly realize that you need to modify these credentials to work with MySQL In-App.

Below is a table containing the default configuration, followed by In-App credentials and configuration. To update your configuration with MySQL In-App, copy-paste both Part 1 and Part 2 for your respective CMS.

WordPress 4+ Joomla 3+ Drupal 8+
Configuration Location wwwroot/wp-config.php wwwroot/configuration.php wwwroot/sites/default/settings.php
Default Configuration /** The name of the database for WordPress */
define('DB_NAME', 'databaseName');/** MySQL database username */
define('DB_USER', 'databaseUserName');/** MySQL database password */
define('DB_PASSWORD', 'databasePassword');/** MySQL hostname */
define('DB_HOST', 'databaseHostName');
public $dbtype = ‘mysql’;
public $host = ‘databaseHostName’;
public $user = ‘databaseUserName’;
public $password = ‘databasePassword’;
public $db = ‘databaseName’;
public $dbprefix = ‘jos_’;
$databases[‘default’][‘default’] = array (
‘database’ => ‘databasename’,
‘username’ => ‘sqlusername’,
‘password’ => ‘sqlpassword’,
‘host’ => ‘localhost’,
‘port’ => ‘3306’,
‘driver’ => ‘mysql’,
‘prefix’ => ”,
‘collation’ => ‘utf8mb4_general_ci’,);
MySQL In-App
Part 1 – Connection String
$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);
}
WordPress 4+ Joomla 3+ Drupal 8+
MySQL In-App
Part 2 – Configuration
// ** 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);
public $dbtype = 'mysql';
public $host = DB_HOST;
public $user = DB_USER;
public $password = DB_PASSWORD;
public $db = DB_NAME;
public $dbprefix = 'jos_';
$databases[‘default’][‘default’] = array (
‘database’ => $connectstr_dbname,
‘username’ => $connectstr_dbusername,
‘password’ => $connectstr_dbpassword,
‘prefix’ => ”,
‘host’ => $connectstr_dbhost,
‘port’ => $_SERVER[‘WEBSITE_MYSQL_PORT’],
‘driver’ => ‘mysql’,
‘namespace’ => ‘Drupal\\Core\\Database\\Driver\\mysql’,
‘collation’ => ‘utf8mb4_general_ci’,
);