# MySQL connect su Linux: come connettere il tuo database MySQL/MariaDB a un server cloud

Puoi connettere facilmente il tuo database MySQL o MariaDB a un server Linux cloud, consentendo di gestire le applicazioni in modo flessibile. Con le credenziali corrette e la giusta configurazione, MySQL connect su Linux è semplice e veloce.

## Requisiti

- Un server cloud su Linux (qualsiasi distribuzione).
- Uno stack [LAMP](https://www.ionos.it/digitalguide/server/know-how/server-lamp-la-soluzione-per-i-siti-web-dinamici/) (Apache, MySQL/MariaDB e PHP) installato e attivo.
- Se hai un [firewall](https://www.ionos.it/digitalguide/server/sicurezza/cose-un-firewall/), devi consentire l’accesso alla porta 3306 sul server MySQL/MariaDB.

## MySQL connect su Linux: come funziona

I database vengono spesso collegati ai [server cloud](https://www.ionos.it/digitalguide/server/know-how/cose-un-server-cloud/) Linux per gestire applicazioni in modo flessibile e scalabile. Ciò consente a più servizi o applicazioni web di accedere agli stessi dati senza necessità di installazioni locali separate. Inoltre, un server cloud facilita la gestione, i backup e gli aggiornamenti di sicurezza del database. In questo tutorial ti mostriamo come configurare un database [MySQL](https://www.ionos.it/digitalguide/server/know-how/cose-mysql/) o [MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/) su un server Linux e collegarlo a uno script PHP.

### Primo passaggio: creare un database di esempio

Ai fini di questo tutorial utilizzeremo un database di prova. Per crearne uno, effettua prima di tutto l’accesso:

```none
mysql -u root -p
```

Crea il database di prova con il seguente comando:

```none
CREATE DATABASE phptest;
```

Ora passa al database di prova:

```none
USE phptest;
```

Qui crea una semplice tabella di esempio. Nel nostro esempio scegliamo una tabella che memorizza i dipendenti:

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

Aggiungi ora due dipendenti alla tabella:

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

Per verificare se i record sono stati creati correttamente, puoi utilizzare la seguente query SQL:

```none
SELECT * FROM employees;
```

L’output dovrebbe presentarsi nel modo seguente:

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

### Secondo passaggio: creare un utente MySQL/MariaDB

Per consentire l’accesso autenticato e allo stesso tempo proteggere il database da accessi non autorizzati, nel passaggio successivo devi creare un utente MySQL/MariaDB. Accedi nuovamente al server di database tramite il client MySQL/MariaDB:

```none
mysql -u root -p
```

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

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

Sostituisci 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`. Altrimenti, utilizza l’indirizzo IP del server in cui si trova lo script PHP.
- `[Password]` con una [password sicura](https://www.ionos.it/digitalguide/server/sicurezza/proteggere-informazioni-sensibili-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 è:

```none
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 è:

```none
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 verificare la connessione della tua applicazione [PHP](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/cose-php/) sul server Linux al database, creiamo un piccolo script di prova. Questo script stabilisce una connessione al database di test, legge i dati da una tabella e li visualizza nel browser. In questo modo puoi assicurarti che utente, password e host siano configurati correttamente e che il database sia raggiungibile.

Innanzitutto, crea lo script di prova:

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

Inserisci quindi il seguente contenuto nel file:

```html
<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>
```

Sostituisci nome utente, password, posizione e nome host con i dati corrispondenti. Se, ad esempio, desideri testare una connessione locale con lo script sullo stesso server del database, seleziona:

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

Per verificare la connessione remota con lo script, quando si trova su un server diverso dal database, le variabili devono avere i seguenti valori:

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

## Risoluzione dei problemi di una connessione remota MySQL/MariaDB

Se la tua applicazione PHP o un altro script non riesce a effettuare una connessione da un altro server al database MySQL/MariaDB, le cause potrebbero essere diverse. I seguenti suggerimenti possono aiutare a risolvere l’errore:

### Soluzione 1: verificare utente e permessi

Se hai problemi a connetterti a un database MySQL/MariaDB su un altro server, verifica innanzitutto 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 impostazione predefinita a un utente di effettuare l’accesso solo dall’host specificato durante la creazione. Ad esempio, se il tuo utente è stato creato in questo modo:

```none
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 esecuzione 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 connessione tramite riga di comando

Prima di controllare lo script PHP, dovresti testare la connessione direttamente tramite la CLI di MySQL. Sul server in cui lo script è in esecuzione, utilizza:

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

Ad esempio, per stabilire una connessione a un database su 192.168.0.2 con il nome utente phpuser2, il comando è:

```none
mysql -u phpuser2 -h 192.168.0.2 -p
```

Se la connessione funziona, con questo comando accederai al client MySQL/MariaDB sul server remoto.

### Soluzione 3: firewall

Assicurati che tutte le regole del firewall rilevanti siano aggiornate per consentire il traffico TCP/UDP sulla porta 3306 per il server del database. Tieni presente che tutti i server cloud sono soggetti alla politica firewall predefinita, che viene gestita tramite il Cloud Panel.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/connettere-il-database-mysql-o-mariadb-a-un-server-linux-cloud/](https://www.ionos.it/digitalguide/server/know-how/connettere-il-database-mysql-o-mariadb-a-un-server-linux-cloud/) for AI/LLM consumption.