Conectar-se e consultar um servidor flexível do Banco de Dados do Azure para MySQL a partir do seu aplicativo
O Banco de Dados do Azure para MySQL - Servidor Flexível oferece a flexibilidade de desenvolver aplicativos usando suas ferramentas, linguagens e estruturas favoritas. Você pode continuar a usar poderosas ferramentas de desenvolvimento 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 Sistemas de Gerenciamento de Conteúdo (CMS) populares como WordPress ou Drupal, Sistemas de Gerenciamento de Aprendizagem (LMS) como o Moodle, plataformas de comércio eletrônico como Magento e assim por diante.
Vamos começar examinando as várias tarefas envolvidas na conexão e consulta do Banco de Dados do Azure para o servidor flexível 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) necessárias para se conectar ao seu Banco de Dados do Azure para servidor flexível 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 certificado SSL
É recomendável proteger os 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.
Salve o arquivo de certificado no local de sua preferência.
Extensões MySQL para PHP
Para se conectar ao MySQL a partir do seu aplicativo PHP, você pode usar uma das seguintes extensões:
- A extensão MySQLi (MySQL Improved). A extensão MySQLi está incluída nas versões 5 e superiores do PHP e fornece interfaces processuais e orientadas a objetos para simplificar a conexão e o trabalho com bancos de dados MySQL.
- PDO_MYSQL. PDO ou PHP Data Objects extensão define uma interface para acessar bancos de dados em PHP. 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ê precisa habilitá-la no php.ini
arquivo de configuração descomentando a linha associada. Por exemplo, se você quiser usar o MySQLi, descomente a extension=mysqli
linha no arquivo.
3 - Conecte-se e consulte um servidor flexível MySQL usando PHP
Embora existam opções para conexão, esta unidade mostra o uso da extensão MySQLi para se conectar ao Banco de Dados do Azure para o servidor flexível MySQL a partir de um aplicativo PHP.
Você também precisará usar a extensão OpenSSL para estabelecer uma conexão criptografada sobre SSL. Como você fez para o MySQLi, habilite a extensão OpenSSL descomentando a extension=openssl
linha no php.ini
arquivo.
Estabeleça uma conexão
Para estabelecer uma conexão com um servidor flexível MySQL usando MySQLi, você pode usar o seguinte trecho de código em seu aplicativo PHP. Certifique-se de substituir os host
parâmetros , username
, password
e com db_name
seus valores e, em seguida, forneça o caminho para o caminho do certificado SSL baixado no mysqli_ssl_set()
método.
$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
mysqli_init()
método inicializa o MySQLi e retorna um objeto para uso commysqli_real_connect()
- O
mysqli_ssl_set()
é usado para estabelecer conexões seguras usando SSL. Este método inclui o caminho para o certificado SSL baixado. Esta função não faz nada a menos que a extensão OpenSSL esteja ativada. - O
mysqli_real_connect()
método abre uma conexão com um mecanismo de banco de dados MySQL. Passe as informações de conexão flexível do servidor MySQL como argumentos para estabelecer uma conexão com ele.
Executar operações de banco de dados
Depois de estabelecer uma conexão com o banco de dados flexível do servidor, use métodos como mysqli_query()
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 qualquer entrada variável, use instruções preparadas parametrizadas. Isso protege contra ataques de injeção de SQL, que são uma das técnicas mais comuns usadas por hackers da web.
Segue-se um trecho de código que insere dados em uma tabela usando instruções preparadas com 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);
}
Feche a conexão
Depois de concluir as operações do banco de dados, é uma boa prática fechar a conexão do banco de dados usando o mysqli_close()
método.
mysqli_close($conn);
Conectores MySQL para Python
Para se conectar ao MySQL a partir do seu aplicativo Python, você pode usar o MySQL Connector/Python, um driver Python autônomo para se comunicar com servidores MySQL ou PyMySQL.
Você pode facilmente instalar esses conectores usando o instalador pip
do pacote Python . Por exemplo, pip install mysql-connector-python
3 - Conectar-se 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 a partir do seu aplicativo Python.
Estabeleça uma conexão
Segue-se um trecho de código que você pode usar em seu aplicativo Python para estabelecer uma conexão com seu servidor flexível MySQL. Certifique-se de substituir os host
parâmetros , user
, password
e database
com seus valores e forneça o caminho para o certificado SSL baixado na ssl_ca
opção.
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
mysql.connector.connect()
método configura uma conexão com o servidor MySQL e retorna um objeto de conexão. Passe o objeto de informações de conexão de servidor flexível MySQL como argumento para estabelecer uma conexão com ele. - O
cursor()
método do objeto de conexão cria um cursor que pode ser usado para interagir com o servidor MySQL.
Executar operações de banco de dados
Depois de estabelecer uma conexão com seu banco de dados de servidor flexível MySQL, use o objeto cursor e invoque cursor.execute()
o método para executar quaisquer 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))
Feche a conexão
O MySQL Connector/Python não confirma transações automaticamente, por isso é importante chamar o commit()
método 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 a partir do seu aplicativo Java, você pode usar o MySQL Connector/J, uma API compatível com JDBC que implementa nativamente o protocolo MySQL em Java, em vez de utilizar bibliotecas cliente. Você pode instalar o MySQL Connector/J a partir de uma distribuição binária ou usando o gerenciador de dependências do Apache Maven.
Como alternativa, você também pode usar frameworks como Spring Data JPA para se conectar ao MySQL a partir de Java.
3 - Conectar-se 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 a partir do seu aplicativo Java.
Armazenar informações de conexão
É uma boa prática criar um application.properties
arquivo na seção de recursos do seu código-fonte para armazenar as informações de conexão flexível do servidor MySQL.
url=jdbc:mysql://<your_server_name>.mysql.database.azure.com:3306/<your_database_name>?serverTimezone=UTC
user=<your_admin_username>
password=<your_password>
Estabeleça uma conexão
Quando você está usando JDBC fora de um servidor de aplicativos, a classe DriverManager em java.sql pacote gerencia o estabelecimento de conexões. Para se conectar ao seu servidor flexível MySQL, primeiro carregue as propriedades de conexão do arquivo e invoque o método do getConnection()
DriverManager passando essas propriedades de application.properties
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 de banco de dados
Depois de estabelecer uma conexão e obter o Connection
objeto, você pode chamar o createStatement()
método no objeto para criar um Statement
objeto.
Depois de ter uma Statement
instância, você pode executar uma SELECT
consulta chamando o executeQuery(String)
método com o SQL que deseja usar. Para atualizar dados no banco de dados, use o executeUpdate(String SQL)
método.
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 qualquer entrada variável, as instruções preparadas parametrizadas devem ser usadas. Isso protege contra ataques de injeção de SQL, que são uma das técnicas mais comuns usadas por hackers da web. Para usar instruções preparadas, você pode chamar o prepareStatement()
método no Connection
objeto para criar um PreparedStatement
objeto, vincular os parâmetros e, em seguida, executar a instrução preparada usando executeUpdate()
o método.
Feche a conexão
Depois de concluir as operações do banco de dados, é uma boa prática fechar a conexão do banco de dados usando o close()
método do objeto de conexão. Por exemplo, connection.close();