Conexión y consulta de un servidor flexible de Azure Database for MySQL desde la aplicación
Azure Database for MySQL: servidor flexible le proporciona la flexibilidad de desarrollar aplicaciones con sus herramientas, lenguajes y marcos favoritos. Puede seguir usando herramientas de desarrollo eficaces como Visual Studio Code y GitHub y desarrollar con cualquier lenguaje de programación como PHP, Java, Python, Node.js, C#, Ruby, Rust, Go, etcétera. También puede integrar el servidor flexible con sistemas de administración de contenido populares (CMS), como WordPress o Moodle, Learning Management Systems (LMS), como Moodle, plataformas de comercio electrónico como Magento, etc.
Comencemos por examinar las distintas tareas implicadas en la conexión y consulta del servidor flexible de Azure Database for MySQL desde la aplicación mediante el lenguaje que prefiera.
1- Obtención de información de conexión
La primera tarea consiste en obtener la información de conexión (nombre del servidor, nombre de la base de datos y las credenciales de inicio de sesión) que necesita para conectarse al servidor flexible de Azure Database for MySQL.
En Azure Portal, vaya al recurso de servidor flexible de MySQL y, a continuación, anote el Nombre del servidor y el Nombre de inicio de sesión del administrador del servidor.
2 - Obtención del certificado SSL
Se recomienda proteger los datos en tránsito asegurándose de que la aplicación se conecta a un servidor flexible de Azure Database for MySQL mediante Capa de sockets seguros (SSL). Puede descargar el certificado SSL público desde la hoja Redes de Azure Portal, tal como se muestra en la captura de pantalla siguiente.
Guarde el archivo de certificado en la ubicación que prefiera.
Extensiones de MySQL para PHP
Para conectarse a MySQL desde la aplicación PHP, puede usar una de las siguientes extensiones:
- Extensión MySQLi (MySQL mejorada). La extensión MySQLi se incluye con las versiones 5 y posteriores de PHP, y proporciona interfaces orientadas a objetos y procedimientos para simplificar la conexión y el trabajo con bases de datos MySQL.
- PDO_MYSQL. La extensión de objetos de datos PDO o PHP define una interfaz para acceder a bases de datos en PHP. PDO_MYSQL es un controlador específico de MySQL que implementa la interfaz PDO para habilitar el acceso desde PHP a bases de datos MySQL.
Para usar una extensión, debe habilitarla en el archivo de configuración php.ini
quitando la marca de comentario de la línea asociada. Por ejemplo, si quiere usar MySQLi, quite la marca de comentario de la línea extension=mysqli
del archivo.
3 - Conexión y consulta a un servidor flexible de MySQL mediante PHP
Aunque hay opciones para conectarse, esta unidad muestra el uso de la extensión MySQLi para conectarse al servidor flexible de Azure Database for MySQL desde una aplicación PHP.
También deberá usar la extensión OpenSSL para establecer una conexión cifrada a través de SSL. Al igual que hizo para MySQLi, habilite la extensión OpenSSL quitando la marca de comentario de la extension=openssl
línea en el archivo php.ini
.
Establecer una conexión
Para establecer una conexión a un servidor flexible de MySQL mediante MySQLi, puede usar el siguiente fragmento de código en la aplicación PHP. Asegúrese de reemplazar los parámetros host
, username
, password
, y db_name
por los valores y a continuación, proporcionar la ruta de acceso al certificado SSL descargado en el método mysqli_ssl_set()
.
$host = '<your_server_name>.mysql.database.azure.com';
$username = '<your_admin_username';
$password = '<your_password>';
$db_name = '<your_database_name>';
$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "<your_path_to_SSL_cert>", NULL, NULL);
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
printf("Connection Established.\n");
- El método
mysqli_init()
inicializa MySQLi y devuelve un objeto para su uso conmysqli_real_connect()
mysqli_ssl_set()
se usa para establecer conexiones seguras mediante SSL. Este método toma la ruta de acceso al certificado SSL descargado. Esta función no hace nada a menos que la extensión OpenSSL esté habilitada.- El método
mysqli_real_connect()
abre una conexión a un motor de base de datos MySQL. Pase la información de conexión del servidor flexible de MySQL como argumentos para establecer una conexión con él.
Realización de operaciones de base de datos
Después de establecer una conexión a la base de datos de servidor flexible, use métodos como mysqli_query()
para realizar una consulta. Por ejemplo:
mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')
Si la consulta contiene cualquier entrada de variable, use instrucciones preparadas parametrizadas en su lugar. Esto protege contra ataques por inyección de código SQL, que son una de las técnicas más comunes que usan los hackers web.
A continuación se muestra un fragmento de código que inserta datos en una tabla mediante instrucciones preparadas con MySQLi.
$product_name = 'BrandNewProduct';
$product_price = 15;
//Create a prepared statement
if ($stmt = mysqli_prepare($conn, "INSERT INTO Products (ProductName, Price) VALUES (?, ?)")) {
//Binds the parameters for each column value
mysqli_stmt_bind_param($stmt, 'ssd', $product_name, $product_price);
//Run the prepared statement
mysqli_stmt_execute($stmt);
printf("Insert: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
//Close the prepared statement
mysqli_stmt_close($stmt);
}
Cierre de la conexión
Después de completar las operaciones de la base de datos, se recomienda cerrar la conexión de base de datos mediante el método mysqli_close()
.
mysqli_close($conn);
Conectores MySQL para Python
Para conectarse a MySQL desde la aplicación de Python, puede usar Conector de MySQL/Python, un controlador de Python autocontenida para comunicarse con servidores MySQL o PyMySQL.
Puede instalar fácilmente estos conectores mediante el instalador pip
de paquetes de Python. Por ejemplo: pip install mysql-connector-python
3- Conexión y consulta de Azure Database for MySQL: servidor flexible mediante Python
Aunque tiene opciones para conectarse, en esta unidad se muestra cómo usar el conector MySQL/Python para conectarse al servidor flexible de Azure Database for MySQL desde la aplicación de Python.
Establecer una conexión
A continuación se muestra un fragmento de código que puede usar en la aplicación de Python para establecer una conexión con el servidor flexible de MySQL. Asegúrese de reemplazar los parámetros host
, user
, password
, y database
por sus valores y proporcionar la ruta de acceso al certificado SSL descargado en la opción ssl_ca
.
import mysql.connector
from mysql.connector import errorcode
# Flexible server connection information
config = {
'host':'<your_server_name>.mysql.database.azure.com',
'user':'<your_admin_username>',
'password':'<your_password>',
'database':'<your_database_name>',
'client_flags': [mysql.connector.ClientFlag.SSL],
'ssl_ca': '<your_path_to_SSL_cert>'
}
# Establish connection and obtain cursor object
try:
conn = mysql.connector.connect(**config)
print("Connection established")
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with the user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = conn.cursor()
- El método
mysql.connector.connect()
configura una conexión con el servidor MySQL y devuelve un objeto de conexión. Pase el objeto de información de conexión de servidor flexible de MySQL como argumento para establecer una conexión a él. - El método
cursor()
del objeto de conexión crea un cursor que se puede usar para interactuar con el servidor MySQL.
Realización de operaciones de base de datos
Después de establecer una conexión a la base de datos de servidor flexible de MySQL, use el objeto de cursor e invoque el método cursor.execute()
para realizar cualquier operación de base de datos. Por ejemplo:
# Create table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
# Insert some data into table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
Cierre de la conexión
El conector de MySQL/Python no realiza la confirmación automática de transacciones, por lo tanto, es importante llamar al método commit()
del objeto de conexión, como conn.commit()
, después de cada transacción que modifique los datos.
Después de realizar todas las operaciones, se recomienda cerrar el cursor y el objeto de conexión.
cursor.close()
conn.close()
Conectores MySQL para Java
Para conectarse a MySQL desde la aplicación Java, puede usar Conector MySQL/J, una API compatible con JDBC que implementa de forma nativa el protocolo MySQL en Java, en lugar de usar bibliotecas cliente. Puede instalar el conector de MySQL o J desde una distribución binaria o mediante el administrador de dependencias de Apache Maven.
Como alternativa, también puede usar marcos como Spring Data JPA para conectarse a MySQL desde Java.
3- Conexión y consulta de Azure Database for MySQL: servidor flexible mediante Java
Aunque tiene opciones para conectarse, en esta unidad se muestra cómo usar el conector MySQL/J para conectarse al servidor flexible de Azure Database for MySQL desde la aplicación Java.
Almacenamiento de la Información de conexión
Se recomienda crear un archivo application.properties
en la sección recursos del código fuente para almacenar la información de conexión del servidor flexible de MySQL.
url=jdbc:mysql://<your_server_name>.mysql.database.azure.com:3306/<your_database_name>?serverTimezone=UTC
user=<your_admin_username>
password=<your_password>
Establecer una conexión
Cuando se usa JDBC fuera de un servidor de aplicaciones, la clase DriverManager de java.sql paquete administra el establecimiento de conexiones. Para conectarse al servidor flexible de MySQL, cargue primero las propiedades de conexión desde el archivo application.properties
e invoque el método getConnection()
de DriverManager pasando estas propiedades de conexión a él.
import java.sql.*;
public class DemoApplication {
public static void main(String[] args) throws Exception {
//Load application properties
Properties properties = new Properties();
properties.load(DemoApplication.class.getClassLoader().getResourceAsStream("application.properties"));
//Establish Connection to database
Connection connection = DriverManager.getConnection(properties.getProperty("url"), properties);
.
.
}
}
Realización de operaciones de base de datos
Después de establecer una conexión y obtener el objeto Connection
, puede llamar al método createStatement()
en el objeto para crear un objeto Statement
.
Después de tener una instancia de Statement
, puede ejecutar una consulta SELECT
llamando al método executeQuery(String)
con el SQL que quiera usar. Para actualizar los datos de la base de datos, use el método executeUpdate(String SQL)
.
Por ejemplo:
Statement statement = connection.createStatement();
statement.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER)");
statement.executeUpdate("INSERT INTO inventory (name, quantity) VALUES (\"banana\", 150)");
ResultSet resultSet = statement.executeQuery("SELECT * FROM inventory");
Si la consulta contiene cualquier entrada de variable, se deben usar instrucciones preparadas parametrizadas en su lugar. Esto protege contra ataques por inyección de código SQL, que son una de las técnicas más comunes que usan los hackers web. Para usar instrucciones preparadas, puede llamar al método prepareStatement()
en el objeto Connection
a fin de crear un objetoPreparedStatement
, enlazar los parámetros y, a continuación, ejecutar la instrucción preparada mediante el método executeUpdate()
.
Cierre de la conexión
Después de completar las operaciones de base de datos, se recomienda cerrar la conexión de base de datos mediante el método close()
del objeto de conexión. Por ejemplo: connection.close();