Подключение и запрос гибкого сервера База данных Azure для MySQL из приложения

Завершено

База данных Azure для MySQL — гибкий сервер обеспечивает гибкость разработки приложений с помощью любимых инструментов, языков и платформ. Вы можете продолжать использовать мощные средства разработки, такие как Visual Studio Code и GitHub, и разрабатывать с помощью любого языка программирования, например PHP, Java, Python, Node.js, C#, Ruby, Rust, Go и т. д. Вы также можете интегрировать гибкий сервер с популярными системами управления контентом (CMS), такими как WordPress или Drupal, системы управления обучением (LMS), такие как Moodle, платформы электронной коммерции, такие как Magento и т. д.

Начнем с изучения различных задач, связанных с подключением и запросом База данных Azure для MySQL гибкого сервера из вашего приложения, с помощью выбранного языка.

1. Получение сведений о подключении

Первая задача — получить сведения о подключении (имя сервера, имя базы данных и учетные данные для входа) необходимо подключиться к База данных Azure для MySQL гибкому серверу.

На портале Azure перейдите к гибкому ресурсу сервера MySQL, а затем запишите имя сервера и имя входа администратора сервера.

2. Получение SSL-сертификата

Рекомендуется защитить передаваемые данные, убедив, что приложение подключается к гибкому серверу База данных Azure для MySQL с помощью протокола SSL. Вы можете скачать общедоступный SSL-сертификат из колонки "Сеть " на портале Azure, как показано на следующем снимке экрана.

Снимок экрана: колонка

Сохраните файл сертификата в любое расположение.

Расширения MySQL для PHP

Чтобы подключиться к MySQL из приложения PHP, можно использовать одно из следующих расширений:

  • Расширение MySQLi (MySQL Улучшено). Расширение MySQLi входит в состав PHP версии 5 и более поздних версий и предоставляет объектно-ориентированные и процедурные интерфейсы для упрощения подключения и работы с базами данных MySQL.
  • PDO_MYSQL. Расширение PDO или PHP Data Objects определяет интерфейс для доступа к базам данных в PHP. PDO_MYSQL — это драйвер, зависящий от MySQL, который реализует интерфейс PDO для включения доступа из PHP к базам данных MySQL.

Чтобы использовать расширение, необходимо включить его в php.ini файле конфигурации, раскомментируя связанную строку. Например, если вы хотите использовать MySQLi, удалите комментарий из строки extension=mysqli в файле.

3. Подключение к гибкому серверу MySQL и запрос к нему с помощью PHP

Хотя есть варианты подключения, в этом уроке демонстрируется использование расширения MySQLi для подключения к База данных Azure для MySQL гибкому серверу из приложения PHP.

Кроме того, необходимо использовать расширение OpenSSL для установления зашифрованного соединения по протоколу SSL. Как и для MySQLi, включите расширение OpenSSL, удалив комментарий из строки extension=openssl в файле php.ini.

Установка подключения

Чтобы установить подключение к гибкому серверу MySQL с помощью MySQLi, можно использовать следующий фрагмент кода в приложении PHP. Обязательно замените hostзначения , usernamepasswordи db_name параметры, а затем укажите путь к скачанным пути SSL-сертификата в методе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");
  • Метод mysqli_init() инициализирует MySQLi и возвращает объект для использования с mysqli_real_connect()
  • Используется mysqli_ssl_set() для установления безопасных подключений с помощью SSL. Этот метод принимает путь к загруженному SSL-сертификату. Эта функция ничего не делает, если расширение OpenSSL не включено.
  • Метод mysqli_real_connect() открывает подключение к ядру СУБД MySQL. Передайте сведения о подключении гибкого сервера MySQL в качестве аргументов для установления подключения к нему.

Выполнение операций с базой данных

После установки соединения с базой данных гибкого сервера используйте такие методы, как mysqli_query(), для выполнения запроса. Например:

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

Если запрос содержит любые входные данные переменной, используйте параметризованные подготовленные инструкции. Это защищает от атак внедрения SQL, которые являются одним из наиболее распространенных методов, используемых веб-хакерами.

Фрагмент кода, который вставляет данные в таблицу с помощью подготовленных инструкций с 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);
}

Закрытие соединения

После завершения операций базы данных рекомендуется закрыть подключение к базе данных с помощью mysqli_close() метода.

mysqli_close($conn);

Соединители MySQL для Python

Чтобы подключиться к MySQL из приложения Python, можно использовать соединитель MySQL или Python, автономный драйвер Python для взаимодействия с серверами MySQL или PyMySQL.

Эти соединители можно легко установить с помощью установщика пакетов Python pip. Например: pip install mysql-connector-python

3. Подключение к и запрос База данных Azure для MySQL — гибкий сервер с помощью Python

Хотя у вас есть разные варианты подключения, данный модуль демонстрирует, как использовать MySQL Connector/Python для подключения к базе данных Azure для MySQL — гибкому серверу из вашего приложения на Python.

Установка подключения

Фрагмент кода, который можно использовать в приложении Python для установления подключения к гибкому серверу MySQL, следует. Обязательно замените hostзначения , userpasswordи параметры и database укажите путь к скачанного SSL-сертификата в параметре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()
  • Метод mysql.connector.connect() настраивает соединение с сервером MySQL и возвращает объект подключения. Передайте объект сведений о подключении гибкого сервера MySQL в качестве аргумента для установления подключения к нему.
  • Метод cursor() объекта подключения создает курсор, который можно использовать для взаимодействия с сервером MySQL.

Выполнение операций с базой данных

После установления подключения к гибкой базе данных сервера MySQL используйте объект курсора и метод вызова cursor.execute() для выполнения любых операций базы данных. Например:

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

Закрытие соединения

Соединитель MySQL или Python не выполняет автоматические транзакции, поэтому важно вызвать commit() метод объекта подключения, например conn.commit()после каждой транзакции, которая изменяет данные.

После выполнения всех операций рекомендуется закрыть курсор и объект соединения.

cursor.close()
conn.close()

Соединители MySQL для Java

Чтобы подключиться к MySQL из приложения Java, можно использовать Соединитель MySQL/J, совместимый с JDBC API, который изначально реализует протокол MySQL в Java, а не использование клиентских библиотек. Соединитель MySQL или J можно установить из двоичного дистрибутива или с помощью диспетчера зависимостей Apache Maven.

Кроме того, можно использовать такие платформы, как Spring Data JPA , для подключения к MySQL из Java.

3. Подключение и запрос База данных Azure для MySQL — гибкий сервер с помощью Java

Хотя у вас есть варианты подключения, этот урок демонстрирует, как использовать MySQL Connector/J для подключения к базе данных Azure для MySQL - Flexible Server из вашего Java-приложения.

Сведения о подключении хранилища

Рекомендуется создать application.properties файл в разделе ресурсов исходного кода для хранения сведений о подключении гибкого сервера MySQL.

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

Установка подключения

При использовании JDBC за пределами сервера приложений класс DriverManager в пакете java.sql управляет созданием подключений. Чтобы подключиться к гибкому серверу MySQL, сначала загрузите свойства подключения из файла application.properties и вызовите метод getConnection() DriverManager, передав в него эти свойства соединения.

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

        .
        .

    }
}

Выполнение операций с базой данных

После установления соединения и получения Connection объекта можно вызвать createStatement() метод для создания Statement объекта. После создания экземпляра Statement можно выполнить запрос SELECT, вызвав метод executeQuery(String) с использованием SQL, который вы хотите использовать. Чтобы обновить данные в базе данных, используйте метод executeUpdate(String SQL).

Например:

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

Если запрос содержит любые переменные входные данные, вместо этого следует использовать подготовленные параметризованные инструкции. Это защищает от атак внедрения SQL, которые являются одним из наиболее распространенных методов, используемых веб-хакерами. Чтобы использовать подготовленные инструкции, можно вызвать prepareStatement() метод объекта Connection , чтобы создать PreparedStatement объект, привязать параметры, а затем запустить подготовленную инструкцию с помощью executeUpdate() метода.

Закрытие соединения

После завершения операций с базой данных рекомендуется закрыть соединение с базой данных с помощью метода close() объекта соединения. Например: connection.close();