En algunas ocasiones nos hemos visto en proyectos donde la base de datos a utilizar es MySQL y lo cierto es que en Microsoft Azure a día de hoy tienes varias alternativas para utilizar esta base de datos, como ClearDB, instalarlo en una máquina virtual o incluso el uso de contenedores. Todas ellas generan un gasto adicional que es posible que para entornos de desarrollos y pruebas no esté del todo justificado.
Por ello, el equipo de App Service a puesto a disposición del desarrollador MySQL In App (en preview), que te permite tener dentro del propio App Service una base de datos para desarrollo y pruebas exclusivamente.

Para poder usarlo, basta con acceder a la sección que te mostraba en la imagen anterior y cambiar el estado a ON.

En mi caso he habilitado además los logs para tener toda la información disponible en la carpeta D:/home/logfiles. En el momento que la base de datos MySQL quede habilitada, podrás ver la opción Manage que te llevará al portal phpAdmin.

donde podrás gestionar la base de datos llamada localdb.

Como ya sabes, desde el propio phpMyAdmin puedes crear todo lo que necesites en tu base de datos. La forma de acceder a la misma a través de código es utilizando la cadena de conexión MYSQLCONNSTR_localdb. Dependiendo del lenguaje de programación que utilices podrás acceder a ella de una forma u otra. En el caso de PHP sería de la siguiente forma, como se detalla en el anuncio oficial:
$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); } $link = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname); if (!$link) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; exit; } echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL; echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL; mysqli_close($link);
Para Node.js te dejo este ejemplo, donde te enseño cómo utilizar la cadena de conexión y algunas tareas comunes en MySQL, para que compruebes que todo funciona perfectamente:
var mysql = require('mysql'), mySQLconnString = process.env.MYSQLCONNSTR_localdb, exports = module.exports = {}; exports.test = function() { console.log('MYSQLCONNSTR_localdb'); console.log(process.env.MYSQLCONNSTR_localdb); function getElement(params, key) { for (var i = 0; i < params.length; i++) { if (params[i].indexOf(key) > -1) { return params[i].substring(params[i].indexOf('=') + 1); } } throw "Key doesn't exist!"; } var params = mySQLconnString.split(';'), dbhost = getElement(params, 'Data Source'), dbport = dbhost.substring(dbhost.indexOf(':') + 1), dbhost = dbhost.substring(0, dbhost.indexOf(':')); //host without port var connection = mysql.createConnection({ host: dbhost, port: dbport, user: getElement(params, 'User Id'), password: getElement(params, 'Password'), database: getElement(params, 'Database') }); connection.connect(function(error) { if (error); console.error(error); }); connection.query('DROP TABLE test', function(err, result) { if (!err) { console.log('Result: ', result); } else { console.error(err); } }); connection.query('CREATE TABLE test (id INT(100) NOT NULL AUTO_INCREMENT, name VARCHAR(50), PRIMARY KEY(id))', function(err, result) { if (!err) { console.log('Result: ', result); } else { console.error(err); } }); var values = { name: 'Gisela' }; connection.query('INSERT INTO test SET ?', values, function(err, result) { if (err) { console.error(err); } }); connection.query('SELECT * from test', function(err, rows, fields) { if (!err) { console.log('Rows: ', rows); } else { console.log('error:', err); } }); connection.end(); };
Espero que sea de utilidad.
¡Saludos!