Ansluta till och fråga en flexibel Azure Database for MySQL-server från din app
Azure Database for MySQL – Flexibel server ger dig flexibiliteten att utveckla appar med dina favoritverktyg, språk och ramverk. Du kan fortsätta att använda kraftfulla utvecklingsverktyg som Visual Studio Code och GitHub och utveckla med valfritt programmeringsspråk som PHP, Java, Python, Node.js, C#, Ruby, Rust, Go osv. Du kan också integrera flexibel server med populära Content Management Systems (CMS) som WordPress eller Drupal, Learning Management Systems (LMS) som Moodle, e-handelsplattformar som Magento och så vidare.
Låt oss börja med att titta på de olika uppgifter som ingår i att ansluta till och köra frågor mot en flexibel Azure Database for MySQL-server från din app med det språk du väljer.
1 – Hämta anslutningsinformation
Den första uppgiften är att hämta anslutningsinformationen (servernamn, databasnamn och inloggningsuppgifter) som du behöver för att ansluta till din flexibla Azure Database for MySQL-server.
I Azure Portal går du till din flexibla MySQL-serverresurs och noterar sedan servernamnet och inloggningsnamnet för serveradministratören.
2 – Hämta SSL-certifikat
Vi rekommenderar att du skyddar data under överföring genom att se till att din app ansluter till en flexibel Azure Database for MySQL-server med secure sockets layer (SSL). Du kan ladda ned det offentliga SSL-certifikatet från bladet Nätverk i Azure Portal enligt följande skärmbild.
Spara certifikatfilen på önskad plats.
MySQL-tillägg för PHP
Om du vill ansluta till MySQL från PHP-appen kan du använda något av följande tillägg:
- MySQLi-tillägget (MySQL Improved). MySQLi-tillägget ingår i PHP version 5 och senare och tillhandahåller objektorienterade och procedurmässiga gränssnitt för att förenkla anslutning och arbete med MySQL-databaser.
- PDO_MYSQL. PDO- eller PHP Data Objects-tillägget definierar ett gränssnitt för åtkomst till databaser i PHP. PDO_MYSQL är en MySQL-specifik drivrutin som implementerar PDO-gränssnittet för att aktivera åtkomst från PHP till MySQL-databaser.
Om du vill använda ett tillägg måste du aktivera det i php.ini
konfigurationsfilen genom att avkommentarera den associerade raden. Om du till exempel vill använda MySQLi avkommenterar du extension=mysqli
raden i filen.
3 – Ansluta till och fråga en flexibel MySQL-server med PHP
Även om det finns alternativ för att ansluta visar den här enheten användningen av MySQLi-tillägget för att ansluta till en flexibel Azure Database for MySQL-server från en PHP-app.
Du måste också använda OpenSSL-tillägget för att upprätta en krypterad anslutning via SSL. Precis som för MySQLi aktiverar du OpenSSL-tillägget genom att avkommentera extension=openssl
raden i php.ini
filen.
Upprätta en anslutning
Om du vill upprätta en anslutning till en flexibel MySQL-server med MySQLi kan du använda följande kodfragment i PHP-appen. Ersätt parametrarna host
, username
, password
och db_name
med dina värden och ange sedan sökvägen till den nedladdade SSL-certifikatsökvägen i mysqli_ssl_set()
-metoden.
$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");
- Metoden
mysqli_init()
initierar MySQLi och returnerar ett objekt för användning medmysqli_real_connect()
-
mysqli_ssl_set()
Används för att upprätta säkra anslutningar med hjälp av SSL. Den här metoden tar in sökvägen till ditt nedladdade SSL-certifikat. Den här funktionen gör ingenting om inte OpenSSL-tillägget är aktiverat. - Metoden
mysqli_real_connect()
öppnar en anslutning till en MySQL-databasmotor. Skicka mySQL-anslutningsinformationen för flexibel server som argument för att upprätta en anslutning till den.
Utföra databasåtgärder
När du har upprättat en anslutning till din flexibla serverdatabas använder du metoder som mysqli_query()
att utföra en fråga. Till exempel:
mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')
Om frågan innehåller några variabelindata använder du parametriserade förberedda instruktioner i stället. Detta skyddar mot SQL-inmatningsattacker, som är en av de vanligaste teknikerna som används av webbhackare.
Ett kodfragment som infogar data i en tabell med hjälp av förberedda instruktioner med MySQLi följer.
$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);
}
Stäng anslutningen
När du har slutfört databasåtgärderna är det bra att stänga databasanslutningen med hjälp av mysqli_close()
metoden .
mysqli_close($conn);
MySQL-anslutningsappar för Python
Om du vill ansluta till MySQL från python-appen kan du antingen använda MySQL Connector/Python, en fristående Python-drivrutin för kommunikation med MySQL-servrar eller PyMySQL.
Du kan enkelt installera dessa anslutningsappar med python-paketinstallationsprogrammet pip
. Till exempel: pip install mysql-connector-python
3 – Ansluta till och fråga Azure Database for MySQL – flexibel server med Python
Även om du har alternativ för att ansluta visar den här enheten hur du använder MySQL Connector/Python för att ansluta till Azure Database for MySQL – flexibel server från din Python-app.
Upprätta en anslutning
Ett kodfragment som du kan använda i Python-appen för att upprätta en anslutning till din flexibla MySQL-server följer. Ersätt parametrarna host
, user
, password
och database
med dina värden och ange sökvägen till det nedladdade SSL-certifikatet under ssl_ca
alternativet .
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()
- Metoden
mysql.connector.connect()
konfigurerar en anslutning till MySQL-servern och returnerar ett anslutningsobjekt. Skicka mySQL-objektet för flexibel serveranslutningsinformation som argument för att upprätta en anslutning till den. - Metoden
cursor()
för anslutningsobjektet skapar en markör som kan användas för att interagera med MySQL-servern.
Utföra databasåtgärder
När du har upprättat en anslutning till mySQL-databasen för flexibel server använder du markörobjektet och anropar cursor.execute()
metoden för att utföra alla databasåtgärder. Till exempel:
# 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))
Stäng anslutningen
MySQL Connector/Python tar inte automatiskt emot transaktioner, så det är viktigt att anropa commit()
metoden för anslutningsobjektet, till exempel conn.commit()
, efter varje transaktion som ändrar data.
När du har utfört alla åtgärder är det bra att stänga markören och anslutningsobjektet.
cursor.close()
conn.close()
MySQL-anslutningsappar för Java
Om du vill ansluta till MySQL från din Java-app kan du använda MySQL Connector/J, ett JDBC-kompatibelt API som internt implementerar MySQL-protokollet i Java i stället för att använda klientbibliotek. Du kan installera MySQL Connector/J från en binär distribution eller använda Apache Maven-beroendehanteraren.
Du kan också använda ramverk som Spring Data JPA för att ansluta till MySQL från Java.
3 – Ansluta till och fråga Azure Database for MySQL – flexibel server med Java
Även om du har alternativ för att ansluta visar den här enheten hur du använder MySQL Connector/J för att ansluta till Azure Database for MySQL – flexibel server från din Java-app.
Lagra anslutningsinformation
Det är en bra idé att skapa en application.properties
fil i resursavsnitteti källkoden för att lagra mySQL-anslutningsinformationen för flexibel server.
url=jdbc:mysql://<your_server_name>.mysql.database.azure.com:3306/<your_database_name>?serverTimezone=UTC
user=<your_admin_username>
password=<your_password>
Upprätta en anslutning
När du använder JDBC utanför en programserver hanterar klassen DriverManager i java.sql-paketet etableringen av anslutningar. Om du vill ansluta till din flexibla MySQL-server läser du först in anslutningsegenskaperna från application.properties
filen och anropar DriverManager-metoden getConnection()
genom att skicka dessa anslutningsegenskaper till den.
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);
.
.
}
}
Utföra databasåtgärder
När du har upprättat en anslutning och hämtat Connection
objektet kan du anropa createStatement()
-metoden för objektet för att skapa ett Statement
objekt.
När du har en Statement
instans kan du köra en SELECT
fråga genom att anropa executeQuery(String)
metoden med den SQL som du vill använda. Om du vill uppdatera data i databasen använder du executeUpdate(String SQL)
metoden .
Till exempel:
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");
Om frågan innehåller några variabelindata ska parametriserade förberedda instruktioner användas i stället. Detta skyddar mot SQL-inmatningsattacker, som är en av de vanligaste teknikerna som används av webbhackare. Om du vill använda förberedda instruktioner kan du anropa prepareStatement()
-metoden på Connection
objektet för att skapa ett PreparedStatement
objekt, binda parametrarna och sedan köra den förberedda instruktionen med hjälp av executeUpdate()
metoden.
Stäng anslutningen
När du har slutfört databasåtgärderna är det bra att stänga databasanslutningen close()
med hjälp av metoden för anslutningsobjektet. Till exempel: connection.close();