Conectar e consultar um servidor flexível do Banco de Dados do Azure para MySQL do seu aplicativo

Concluído

O Banco de Dados do Azure para MySQL – Servidor Flexível oferece flexibilidade para desenvolver aplicativos usando suas ferramentas, linguagens e estruturas preferidas. Você pode continuar a usar ferramentas de desenvolvimento avançadas como Visual Studio Code e GitHub e desenvolver usando qualquer linguagem de programação como PHP, Java, Python, Node.js, C#, Ruby, Rust, Go, etc. Você também pode integrar o Servidor Flexível com CMS (Sistemas de Gerenciamento de Conteúdo) populares, como WordPress ou Drupal, Sistemas de Gerenciamento de Aprendizagem (LMS), como o Moodle, plataformas de comércio eletrônico como o Magento e assim por diante.

Vamos começar examinando as várias tarefas envolvidas na conexão e consulta do servidor flexível do Banco de Dados do Azure para MySQL do seu aplicativo, usando o idioma de sua escolha.

1 – Obter informações de conexão

A primeira tarefa é obter as informações de conexão (nome do servidor, nome do banco de dados e credenciais de entrada) que você precisa para se conectar ao servidor flexível do Banco de Dados do Azure para MySQL.

No portal do Azure, navegue até o recurso de servidor flexível do MySQL e anote o Nome do servidor e o Nome de logon do administrador do servidor.

2 – Obter um certificado SSL

É recomendável proteger dados em trânsito, garantindo que seu aplicativo se conecte a um servidor flexível do Banco de Dados do Azure para MySQL usando SSL (Secure Sockets Layer). Você pode baixar o certificado SSL público da folha Rede no portal do Azure, conforme é mostrado na captura de tela a seguir.

Captura de tela mostrando a folha da rede do Banco de Dados do Azure para MySQL no portal do Azure.

Salve o arquivo do certificado em seu local de preferência.

Extensões do MySQL para PHP

Para se conectar ao MySQL do seu aplicativo PHP, você pode usar uma das seguintes extensões:

  • A extensão MySQLi (MySQL Aprimorado) A extensão MySQLi está incluída nas versões 5 e posteriores do PHP e fornece interfaces de procedimento e orientadas a objetos para simplificar a conexão e o trabalho com bancos de dados MySQL.
  • PDO_MYSQL. A extensão PDO (PHP Data Objects) define uma interface para acessar bancos de dados em PHP. O PDO_MYSQL é um driver específico do MySQL que implementa a interface PDO para permitir o acesso do PHP aos bancos de dados MySQL.

Para usar uma extensão, você precisará habilitá-la no arquivo de configuração php.ini descompactando a linha associada. Por exemplo, se você quiser usar o MySQLi, remova a marca de comentário da linha extension=mysqli no arquivo.

3 – Conectar-se a um servidor flexível do MySQL e consultá-lo usando PHP

Embora você tenha opções para se conectar, essa unidade mostra o uso da extensão MySQLi para se conectar ao servidor flexível do Banco de Dados do Azure para MySQL de um aplicativo PHP.

Você também precisará usar a extensão OpenSSL para estabelecer uma conexão criptografada por SSL. Como você fez para o MySQLi, habilite a extensão OpenSSL descompactando a linha extension=openssl no arquivo php.ini.

Estabelecer uma conexão

Para estabelecer uma conexão com um servidor flexível MySQL usando o MySQLi, você pode usar o snippet de código a seguir em seu aplicativo PHP. Substitua os parâmetros host, username, password e db_name pelos valores desejados e depois fornecer o caminho para o certificado SSL baixado no 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");
  • O método mysqli_init() inicializa o MySQLi e retorna um objeto a ser usado com mysqli_real_connect()
  • O mysqli_ssl_set() é usado para estabelecer conexões seguras usando SSL. Esse método usa o caminho para o certificado SSL baixado. Essa função não faz nada, a menos que a extensão OpenSSL esteja habilitada.
  • O método mysqli_real_connect() abre uma conexão com um mecanismo de banco de dados MySQL. Passe as informações de conexão do servidor flexível do MySQL como argumentos para estabelecer uma conexão com ele.

Executar operações do banco de dados

Depois de estabelecer uma conexão com o banco de dados de servidor flexível, use métodos como mysqli_query() para executar uma consulta. Por exemplo:

mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')

Se a consulta contiver uma entrada de variável, use instruções preparadas parametrizadas. Isso oferece proteção contra ataques de injeção de SQL, que é uma das técnicas mais comuns usadas pelos hackers da Web.

Segue um trecho de código que insere dados em uma tabela usando instruções preparadas com o 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);
}

Fechar a conexão

Depois de concluir as operações de banco de dados, uma boa prática é fechar a conexão de banco de dados usando o método mysqli_close().

mysqli_close($conn);

Conectores MySQL para Python

Para se conectar ao MySQL por meio do aplicativo Python, você pode usar o Conector MySQL/Python, um driver Python autônomo para se comunicar com servidores os MySQL ou o PyMySQL.

Você pode instalar esses conectores facilmente usando o instalador de pacotes Python pip. Por exemplo, pip install mysql-connector-python

3 – Conectar e consultar o Banco de Dados do Azure para MySQL – Servidor Flexível usando Python

Embora você tenha opções para se conectar, esta unidade mostra como usar o MySQL Connector/Python para se conectar ao Banco de Dados do Azure para MySQL – Servidor Flexível do seu aplicativo Python.

Estabelecer uma conexão

Segue um trecho de código que você pode usar em seu aplicativo Python para estabelecer uma conexão com o servidor flexível MySQL. Substitua os parâmetros host, user, password e database pelos valores desejados e fornecer o caminho para o certificado SSL baixado na opção 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()
  • O método mysql.connector.connect() configura uma conexão com o servidor MySQL e retorna um objeto de conexão. Passe o objeto de informações de conexão do servidor flexível do MySQL como um argumento para estabelecer uma conexão com ele.
  • O método cursor() do objeto de conexão cria um cursor que pode ser usado para interagir com o servidor MySQL.

Executar operações do banco de dados

Depois de estabelecer uma conexão com o banco de dados do servidor flexível do MySQL, use o objeto de cursor e invoque o método cursor.execute() para executar as operações de banco de dados. Por exemplo:

# 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))

Fechar a conexão

O Conector mySQL/Python não confirma transações automaticamente, portanto, é importante chamar o método commit() do objeto de conexão, como conn.commit(), após cada transação que modifica dados.

Depois de executar todas as operações, uma boa prática é fechar o cursor e o objeto de conexão.

cursor.close()
conn.close()

Conectores MySQL para Java

Para se conectar ao MySQL usando o aplicativo Java, você pode usar o Conector MySQL/J, uma API compatível com JDBC que implementa nativamente o protocolo MySQL em Java, em vez de utilizar bibliotecas de clientes. Você pode instalar o Conector MySQL/J de uma distribuição binária ou usando o gerenciador de dependências do Apache Maven.

Como alternativa, você também pode usar estruturas como Spring Data JPA para se conectar ao MySQL por meio do Java.

3 – Conectar e consultar o Banco de Dados do Azure para MySQL – Servidor Flexível usando Java

Embora você tenha opções para se conectar, esta unidade mostra como usar o MySQL Connector/J para se conectar ao Banco de Dados do Azure para MySQL – Servidor Flexível do seu aplicativo Java.

Armazenar informações de conexão

É uma boa prática criar um arquivo application.properties na seção recursos do código-fonte para armazenar as informações de conexão do servidor flexível do MySQL.

url=jdbc:mysql://<your_server_name>.mysql.database.azure.com:3306/<your_database_name>?serverTimezone=UTC
user=<your_admin_username>
password=<your_password>

Estabelecer uma conexão

Quando você usa o JDBC fora de um servidor de aplicativos, a classe DriverManager no pacote java.sql gerencia o estabelecimento de conexões. Para se conectar ao servidor flexível MySQL, primeiro carregue as propriedades de conexão do arquivo application.properties e invoque o método getConnection() do DriverManager passando essas propriedades de conexão para ele.

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);

        .
        .

    }
}

Executar operações do banco de dados

Depois de estabelecer uma conexão e obter o objeto Connection, você pode chamar o método createStatement() no objeto para criar um objeto Statement. Quando você tiver uma instância de Statement, execute uma consulta SELECT chamando o método executeQuery(String) com o SQL que deseja usar. Para atualizar dados no banco de dados, use o método executeUpdate(String SQL).

Por exemplo:

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");

Se a consulta contiver uma entrada de variável, use instruções preparadas parametrizadas. Isso oferece proteção contra ataques de injeção de SQL, que é uma das técnicas mais comuns usadas pelos hackers da Web. Para usar instruções preparadas, você pode chamar o método prepareStatement() no objeto Connection para criar um objeto PreparedStatement, associar os parâmetros e, em seguida, executar a instrução preparada usando o método executeUpdate().

Fechar a conexão

Depois de concluir as operações de banco de dados, uma boa prática é fechar a conexão de banco de dados usando o método close() do objeto de conexão. Por exemplo, connection.close();