Puoi con­net­te­re fa­cil­men­te il tuo database MySQL o MariaDB a un server Linux cloud, con­sen­ten­do di gestire le ap­pli­ca­zio­ni in modo fles­si­bi­le. Con le cre­den­zia­li corrette e la giusta con­fi­gu­ra­zio­ne, MySQL connect su Linux è semplice e veloce.

Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa

Requisiti

  • Un server cloud su Linux (qualsiasi di­stri­bu­zio­ne).
  • Uno stack LAMP (Apache, MySQL/MariaDB e PHP) in­stal­la­to e attivo.
  • Se hai un firewall, devi con­sen­ti­re l’accesso alla porta 3306 sul server MySQL/MariaDB.

MySQL connect su Linux: come funziona

I database vengono spesso collegati ai server cloud Linux per gestire ap­pli­ca­zio­ni in modo fles­si­bi­le e scalabile. Ciò consente a più servizi o ap­pli­ca­zio­ni web di accedere agli stessi dati senza necessità di in­stal­la­zio­ni locali separate. Inoltre, un server cloud facilita la gestione, i backup e gli ag­gior­na­men­ti di sicurezza del database. In questo tutorial ti mostriamo come con­fi­gu­ra­re un database MySQL o MariaDB su un server Linux e col­le­gar­lo a uno script PHP.

Primo passaggio: creare un database di esempio

Ai fini di questo tutorial uti­liz­ze­re­mo un database di prova. Per crearne uno, effettua prima di tutto l’accesso:

mysql -u root -p

Crea il database di prova con il seguente comando:

CREATE DATABASE phptest;

Ora passa al database di prova:

USE phptest;

Qui crea una semplice tabella di esempio. Nel nostro esempio scegliamo una tabella che memorizza i di­pen­den­ti:

CREATE TABLE employees (id INT, name VARCHAR(40));

Aggiungi ora due di­pen­den­ti alla tabella:

INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");

Per ve­ri­fi­ca­re se i record sono stati creati cor­ret­ta­men­te, puoi uti­liz­za­re la seguente query SQL:

SELECT * FROM employees;

L’output dovrebbe pre­sen­tar­si nel modo seguente:

+------+-------+
| id   | name  |
+------+-------+
| 1    | Alice |
| 2    | Bob   |
+------+-------+
2 rows in set (0,002 sec)

Secondo passaggio: creare un utente MySQL/MariaDB

Per con­sen­ti­re l’accesso au­ten­ti­ca­to e allo stesso tempo pro­teg­ge­re il database da accessi non au­to­riz­za­ti, nel passaggio suc­ces­si­vo devi creare un utente MySQL/MariaDB. Accedi nuo­va­men­te al server di database tramite il client MySQL/MariaDB:

mysql -u root -p

Il comando seguente crea un utente e gli concede i permessi per il database che abbiamo creato nel primo passaggio:

CREATE USER [Username]@[Location] IDENTIFIED BY [Password];
GRANT ALL PRIVILEGES ON [NomeDatabase].* TO [Username]@[Location];
FLUSH PRIVILEGES;

So­sti­tui­sci i seguenti elementi nel comando sopra:

  • [NomeDatabase] con il nome del tuo database.
  • [Username] con il nome dell’utente che desideri creare per il tuo database.
  • [Location] con il percorso dello script PHP. Se lo script PHP e il database MySQL si trovano sullo stesso server, utilizza localhost. Al­tri­men­ti, utilizza l’indirizzo IP del server in cui si trova lo script PHP.
  • [Password] con una password sicura per il tuo utente.

Per esempio, per creare un utente chiamato phpuser con la password Ig86N3tUa9, che si trova sullo stesso server del database MySQL e ha accesso al database phptest, il comando è:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

Per creare un secondo utente chiamato phpuser2 che si connette da un server con l’indirizzo IP 192.168.0.1, il comando è:

CREATE USER 'phpuser2'@'192.168.0.1' IDENTIFIED BY 'Rq53yur62I';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser2'@'192.168.0.1';
FLUSH PRIVILEGES;

Terzo passaggio: creare uno script PHP

Per ve­ri­fi­ca­re la con­nes­sio­ne della tua ap­pli­ca­zio­ne PHP sul server Linux al database, creiamo un piccolo script di prova. Questo script sta­bi­li­sce una con­nes­sio­ne al database di test, legge i dati da una tabella e li vi­sua­liz­za nel browser. In questo modo puoi as­si­cu­rar­ti che utente, password e host siano con­fi­gu­ra­ti cor­ret­ta­men­te e che il database sia rag­giun­gi­bi­le.

In­nan­zi­tut­to, crea lo script di prova:

sudo nano /var/www/html/phpconnect.php

Inserisci quindi il seguente contenuto nel file:

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>
<h3>Welcome to the PHP Connect Test</h3>
<?php
$dbname = [NomeDatabase];
$dbuser = [Username];
$dbpass = [Password];
$dbhost = [Location];
// Stabilire una connessione
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$connect) {
die("Connessione non andata a buon fine: " . mysqli_connect_error());
}
// Richiedere i dati
$result = mysqli_query($connect, "SELECT id, name FROM employees");
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: {$row['id']}  Name: {$row['name']}<br>";
}
mysqli_close($connect);
?>
</body>
</html>
html

So­sti­tui­sci nome utente, password, posizione e nome host con i dati cor­ri­spon­den­ti. Se, ad esempio, desideri testare una con­nes­sio­ne locale con lo script sullo stesso server del database, seleziona:

$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';

Per ve­ri­fi­ca­re la con­nes­sio­ne remota con lo script, quando si trova su un server diverso dal database, le variabili devono avere i seguenti valori:

$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';

Ri­so­lu­zio­ne dei problemi di una con­nes­sio­ne remota MySQL/MariaDB

Se la tua ap­pli­ca­zio­ne PHP o un altro script non riesce a ef­fet­tua­re una con­nes­sio­ne da un altro server al database MySQL/MariaDB, le cause po­treb­be­ro essere diverse. I seguenti sug­ge­ri­men­ti possono aiutare a risolvere l’errore:

Soluzione 1: ve­ri­fi­ca­re utente e permessi

Se hai problemi a con­net­ter­ti a un database MySQL/MariaDB su un altro server, verifica in­nan­zi­tut­to quanto segue:

  • Stai usando il nome utente e la password corretti per MySQL/MariaDB?
  • Questo utente ha impostato la posizione corretta?

MySQL/MariaDB consente per im­po­sta­zio­ne pre­de­fi­ni­ta a un utente di ef­fet­tua­re l’accesso solo dall’host spe­ci­fi­ca­to durante la creazione. Ad esempio, se il tuo utente è stato creato in questo modo:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

Allora l’accesso funziona solo sullo stesso server su cui è in ese­cu­zio­ne il database (localhost). Uno script su un altro server deve avere un utente creato per l’indirizzo IP remoto o % (tutti gli host).

Soluzione 2: test di con­nes­sio­ne tramite riga di comando

Prima di con­trol­la­re lo script PHP, dovresti testare la con­nes­sio­ne di­ret­ta­men­te tramite la CLI di MySQL. Sul server in cui lo script è in ese­cu­zio­ne, utilizza:

mysql -u [username] -h [host server IP address] -p

Ad esempio, per stabilire una con­nes­sio­ne a un database su 192.168.0.2 con il nome utente phpuser2, il comando è:

mysql -u phpuser2 -h 192.168.0.2 -p

Se la con­nes­sio­ne funziona, con questo comando accederai al client MySQL/MariaDB sul server remoto.

Soluzione 3: firewall

As­si­cu­ra­ti che tutte le regole del firewall rilevanti siano ag­gior­na­te per con­sen­ti­re il traffico TCP/UDP sulla porta 3306 per il server del database. Tieni presente che tutti i server cloud sono soggetti alla politica firewall pre­de­fi­ni­ta, che viene gestita tramite il Cloud Panel.

Vai al menu prin­ci­pa­le