Installare MySQL/MariaDB
MySQL è un popolare RDBMS (Relational Database Management System). MariaDB è nato come fork di MySQL. Oggi i due prodotti sono leggermente diversi. La migrazione dei dati da un sistema all’altro non è un compito banale.
MariaDB ha una licenza GPLv2, mentre MySQL ha due opzioni di licenza, GPLv2 (per l’edizione Community) ed Enterprise.
Nei Repository di Fedora puoi trovare:
-
MariaDB 10.3 (come pacchetto normale o come modulo)
-
MariaDB 10.4 (come modulo)
-
MySQL 8.0 community edition (come pacchetto normale o come modulo)
| I pacchetti MariaDB e MySQL sono in conflitto perché forniscono file simili. Pertanto, è possibile installare solo uno dei due, MariaDB o MySQL, ma non entrambi. |
Inoltre, è possibile installare MySQL commmunity edition (8.0 o 5.7) dal repository gestito da Oracle/MySQL.
Installazione da Oracle MySQL
|
This page discusses third-party software sources not officially affiliated with or endorsed by the Fedora Project. Use them at your own discretion. Fedora recommends the use of free and open source software and avoidance of software encumbered by patents. |
Aggiunta del repository MySQL a Fedora
Scarica il pacchetto di rilascio fornito da Oracle da: https://dev.mysql.com/downloads/repo/yum/ Una volta scaricato, installalo usando dnf:
sudo dnf install <percorso del file rpm scaricato>
Nota che questo repository è fornito da Oracle, quindi eventuali problemi o bug devono essere segnalati attraverso i loro canali di comunicazione: https://www.mysql.com/about/faq/
Avvio del servizio MySQL e abilitazione all’accesso:
sudo systemctl start mysqld sudo systemctl enable mysqld
Trova la password predefinita. Per motivi di sicurezza, MySQL genera una chiave root temporanea. Nota che MySQL ha politiche di sicurezza più rigide rispetto a MariaDB.
sudo grep 'password temporanea' /var/log/mysqld.log
Installazione dal repository principale di Fedora
La comunità fornisce un pacchetto MySQL nel repository principale.
sudo dnf install {community-mysql-server|mariadb-server}
Configurazione di MySQL/MariaDB
Abilita il servizio all’avvio e avvialo:
sudo systemctl enable {mysqld|mariadb}
sudo systemctl start {mysqld|mariadb}
Installazione tramite Podman
Avvio di un’istanza del server MySQL
I comandi qui sotto contengono la password casuale generata per l’utente root:
podman logs mysql 2>&1 | grep GENERATA
podman run -d --name=mysql -e MYSQL_ROOT_PASSWORD=mia_password mysql/mysql-server
Avvio di un’istanza del server MariaDB
podman run -d --name=mariadb -e MYSQL_ROOT_PASSWORD=mia_password mariadb/server
| Password predefinita vuota per MariaDB |
| L’opzione -d utilizzata per ENTRAMBI nel comando podman run sopra fa sì che il contenitore venga eseguito in background. Usa questo comando per monitorare l’output dal contenitore: |
Connessione al server MySQL dall’interno del contenitore
podman exec -it mysql mysql -uroot -p
devi reimpostare la password root del server eseguendo questa istruzione:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
Utilizzo del RDBMS
Connettiti alla shell di MySQL/MariaDB usando il comando mysql.
Per entrambi, il comando è mysql. La sintassi e le opzioni sono generalmente le stesse.
$ mysql -u root -p
Una volta ottenuto l’accesso alla shell, puoi verificare la versione del software in esecuzione:
mysql> SELECT version();
Puoi creare un database:
mysql> create schema test;
Creazione di un utente:
mysql> GRANT ALL PRIVILEGES ON test.* TO 'mio_utente'@'localhost' IDENTIFIED BY 'PaSsWoRd';
Elenca i database disponibili:
mysql> show schemas;
Come consentire l’accesso remoto a MySQL/MariaDB/MySQL Community
Aggiunta di una nuova regola a Firewalld
Apri la porta SQL (3306) su Firewalld:
sudo firewall-cmd --permanent --zone=public --add-service=mysql
Modifica dei file di configurazione:
File di configurazione:
-
MySQL →
/etc/my.cnf/ -
MySQL Community →
/etc/my.cnf.d/community-mysql-server.cnf -
MariaDB →
/etc/my.cnf
puoi verificarlo con il seguente comando rpm -qc [pacchetto].
|
Vai alla riga che inizia con la direttiva bind-address. Sarà simile a questa: puoi impostare questa direttiva a un indirizzo IP jolly, come *, ::, o 0.0.0.0:
bind-address = 0.0.0.0
Dopo aver modificato questa riga, salva e chiudi il file, quindi riavvia il servizio MySQL:
sudo systemctl restart {mysqld|mariadb}
Creazione di un utente
CREATE USER 'tuo_nome_utente'@'indirizzo_ip_host' IDENTIFIED BY 'tua_password';
| Sostituisci tuo_nome_utente e tua_password con il nome utente e la password desiderati. Qui, indirizzo_ip_host è il nome host o l’indirizzo IP del computer da cui vuoi connetterti al server MySQL/MariaDB. Puoi anche usare % come indirizzo_ip_host se vuoi connetterti da qualsiasi computer. Può anche essere qualcosa come 192.168.2.% se vuoi connetterti da computer nell’intervallo IP 192.168.2.1 – 192.168.2.254. |
Consentire l’accesso
GRANT ALL PRIVILEGES ON *.* TO 'tuo_nome_utente'@'%'; IDENTIFIED BY 'mia-nuova-password' WITH GRANT OPTION;
Oppure
È comune che le persone vogliano creare un utente "root" che possa connettersi da qualsiasi luogo, quindi, come esempio, faremo proprio questo, ma per migliorarlo creeremo un utente root che possa connettersi da qualsiasi punto della rete locale (LAN).
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'mia-nuova-password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Come risolvere problemi in SQL
Versione:
dnf list installed | grep -i -e maria -e mysql -e galera
Verifica dei parametri nel file di configurazione:
-
MySQL:
mysqld --print-defaults
-
MariaDB/MySQL Community:
/usr/libexec/mysqld --print-defaults
| La compatibilità tra versioni diverse non è consentita. Installane solo una. |
Come accedere ai log degli errori SQL
Spesso, la causa principale di rallentamenti, arresti anomali o comportamenti imprevisti in SQL può essere trovata nei log degli errori. In molti casi, i log degli errori sono più facilmente leggibili con il programma less, un’utilità da riga di comando.
se SQL non si comporta come previsto, puoi ottenere ulteriori informazioni sulla fonte del problema
-
systemctl status mysqld.service non si avvia correttamente, queste informazioni non spiegano bene cosa sta succedendo? Dopo questo comando, dovresti digitare
journalctl -xe -u mariadb -u mysqld. -
Controlla i file di log, che si trovano in
/var/log/mysql/mysqld.logper MySQL e in/var/log/mariadbper MariaDB.
Come risolvere gli errori di socket in SQL
SQL gestisce le connessioni al server del database tramite un file di socket, un tipo speciale di file che facilita la comunicazione tra diversi processi. Il file di socket del server MySQL si chiama mysqld.sock e sui sistemi Ubuntu è solitamente memorizzato nella directory /var/run/mysqld/. Questo file viene creato automaticamente dal servizio MySQL.
A volte, modifiche al sistema o alla configurazione di SQL possono impedire a SQL di leggere il file di socket, bloccando l’accesso ai database. L’errore di socket più comune appare così:
ERRORE 2002 (HY000): Impossibile connettersi al server MySQL locale tramite il socket '/var/run/mysqld/mysqld.sock' (2)
Ci sono diverse ragioni per cui si può verificare questo errore e alcuni modi potenziali per risolverlo. Una causa comune di questo errore è che il servizio SQL è fermo o non è mai stato avviato, il che significa che non è stato in grado di creare il file di socket in primo luogo. Per scoprire se questa è la ragione dell’errore, prova ad avviare il servizio con systemctl:
sudo systemctl start {mysqld|mariadb}
Quindi prova ad accedere nuovamente al prompt di MySQL. Se ricevi ancora l’errore di socket, verifica nuovamente la posizione in cui l’installazione di MySQL cerca il file di socket. Queste informazioni si trovano nel file mysqld.cnf:
cerca il parametro socket nella sezione [mysqld] di questo file. Sarà simile a questo:
[mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306
Chiudi questo file, quindi verifica che il file mysqld.sock esista eseguendo un comando ls sulla directory in cui SQL si aspetta di trovarlo:
ls -a /var/run/mysqld/
Se il file di socket esiste, lo vedrai nell’output di questo comando:
mysqld.pid mysqld.sock mysqld.sock.lock
se il file non esiste, la ragione potrebbe essere che MySQL sta cercando di crearlo, ma non ha i permessi adeguati per farlo. Puoi assicurarti che i permessi corretti siano in atto cambiando la proprietà della directory all’utente e al gruppo mysql:
sudo chown mysql:mysql /var/run/mysqld/
Quindi assicurati che l’utente mysql abbia i permessi appropriati sulla directory. Impostare questi a 775 funziona nella maggior parte dei casi:
sudo chmod -R 755 /var/run/mysqld/
Infine, riavvia il servizio MySQL in modo che possa provare a creare nuovamente il file di socket:
sudo systemctl restart {mysqld|mariadb}
Quindi prova ad accedere nuovamente al prompt di MySQL. Se incontri ancora l’errore di socket, è probabile che ci sia un problema più profondo con la tua istanza di MySQL, nel qual caso dovresti controllare il log degli errori per vedere se fornisce qualche indizio.
Want to help? Learn how to contribute to Fedora Docs ›