MySQL è un database relazionale open source gratuito e ampiamente utilizzato. È una buona scelta se sai di aver bisogno di un database ma non sai molto su tutte le opzioni disponibili.
Questo articolo descrive un'installazione di base di un server di database MySQL sul sistema operativo Ubuntu. Potrebbe essere necessario installare altri pacchetti per consentire alle applicazioni di utilizzare MySQL, come le estensioni per PHP. Controlla la documentazione della tua domanda per i dettagli.
Installa MySQL
Installa il server MySQL utilizzando il gestore di pacchetti del sistema operativo Ubuntu:
sudo apt-get update
sudo apt-get install mysql-server
Il programma di installazione installa MySQL e tutte le dipendenze.
Se l'utilità di installazione sicura non si avvia automaticamente al termine dell'installazione, immettere il comando seguente:
sudo mysql_secure_installation utility
Questa utility ti chiede di definire la password di root mysql e altre opzioni relative alla sicurezza, inclusa la rimozione dell'accesso remoto all'utente root e l'impostazione della password di root.
Consenti accesso remoto
Se hai iptables abilitato e vuoi connetterti al database MySQL da un'altra macchina, devi aprire una porta nel firewall del tuo server (la porta predefinita è 3306). Non è necessario farlo se l'applicazione che utilizza MySQL è in esecuzione sullo stesso server.
Eseguire il comando seguente per consentire l'accesso remoto al server MySQL:
sudo ufw enable
sudo ufw allow mysql
Avvia il servizio MySQL
Al termine dell'installazione, è possibile avviare il servizio database eseguendo il comando seguente. Se il servizio è già avviato, un messaggio ti informa che il servizio è già in esecuzione:
sudo systemctl start mysql
Avvia al riavvio
Per garantire che il server di database venga avviato dopo un riavvio, eseguire il comando seguente:
sudo systemctl enable mysql
Configura interfacce
MySQL, per impostazione predefinita, non è più vincolato (in ascolto su) a nessuna interfaccia accessibile in remoto. Modifica la direttiva "bind-address" in /etc/mysql/mysql.conf.d/mysqld.cnf:
bind-address = 127.0.0.1 ( The default. )
bind-address = XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )
bind-address = ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )
bind-address = 0.0.0.0 ( All ip addresses. )
Riavvia il servizio MySQL.
sudo systemctl restart mysql
Avvia la shell mysql
C'è più di un modo per lavorare con un server MySQL, ma questo articolo si concentra sull'approccio più semplice e compatibile, il mysql
guscio.
-
Al prompt dei comandi, esegui il comando seguente per avviare
mysql
shell e inseriscilo come utente root:/usr/bin/mysql -u root -p
-
Quando ti viene richiesta una password, inserisci quella che hai impostato al momento dell'installazione oppure, se non l'hai impostata, premi Invio per inviare nessuna password.
Il seguente
mysql
dovrebbe apparire il prompt della shell:mysql>
Imposta la password di root
Se hai effettuato l'accesso inserendo una password vuota o se desideri modificare la password di root che hai impostato, puoi creare o modificare la password.
-
Per le versioni precedenti a MySQL 5.7, immetti il seguente comando in
mysql
shell, sostituiscipassword
con la tua nuova password:UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
Per la versione MySQL 5.7 e successive, inserisci il seguente comando in
mysql
shell, sostituendopassword
con la tua nuova password:UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
-
Per rendere effettiva la modifica, ricaricare le informazioni utente memorizzate con il seguente comando:
FLUSH PRIVILEGES;
Nota :Stiamo usando tutte le maiuscole per i comandi SQL. Se digiti quei comandi in minuscolo, funzioneranno. Per convenzione, i comandi sono scritti in maiuscolo per distinguerli dai nomi dei campi e da altri dati che vengono manipolati.
Se è necessario reimpostare la password di root in un secondo momento, vedere Reimpostare una password di root MySQL.
Visualizza utenti
MySQL memorizza le informazioni sull'utente nel proprio database. Il nome del database è mysql . All'interno di quel database le informazioni sull'utente si trovano in una tabella, un set di dati, denominata utente . Se vuoi vedere quali utenti sono impostati nella tabella MySQLuser, esegui il seguente comando:
SELECT User, Host, authentication_string FROM mysql.user;
L'elenco seguente descrive le parti di quel comando:
- SELEZIONA dice a MySQL che stai chiedendo dati.
- Utente , Ospite , stringa_autenticazione dice a MySQL in quali campi vuoi che guardi. I campi sono categorie per i dati in una tabella. In questo caso, stai cercando il nome utente, l'host associato al nome utente e la password crittografata.
- DA mysql.user " dice a MySQL di ottenere i dati da mysql database e l'utente tabella.
- Un punto e virgola (;) termina il comando.
Nota :tutte le query SQL terminano con un punto e virgola. MySQL non elabora una query finché non si digita un punto e virgola.
host utente
L'esempio seguente è l'output della query precedente:
SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User | Host | authentication_string |
+------------------+-----------+-------------------------------------------+
| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
+------------------+-----------+-------------------------------------------+
Gli utenti sono associati a un host, in particolare all'host da cui si connettono. L'utente root in questo esempio è definito per localhost , per l'indirizzo IP di localhost e il nome host del server. Di solito devi impostare un utente per un solo host, quello da cui ti connetti di solito.
Se stai eseguendo la tua applicazione sullo stesso computer del server MySQL, l'host a cui si connette per impostazione predefinita è localhost . Tutti i nuovi utenti che crei devono avere localhost nel loro host campo.
Se la tua applicazione si connette in remoto, l'host la voce che MySQL cerca è l'indirizzo IP o il nome host DNS del computer remoto (quello da cui proviene il client).
Utenti anonimi
Nell'output di esempio, una voce ha un valore host ma nessun nome utente o password. Quello è un utente anonimo . Quando un client si connette senza il nome utente specificato, sta tentando di connettersi come utente anonimo.
Di solito non vuoi utenti anonimi, ma alcune installazioni MySQL ne includono uno per impostazione predefinita. Se ne vedi uno, dovresti eliminare l'utente (fare riferimento al nome utente con virgolette vuote, come " ") o impostare una password per esso.
Crea un database
C'è una differenza tra un server di database e un database , anche questi termini sono spesso usati in modo intercambiabile. MySQL è un server di database, il che significa che tiene traccia dei database e ne controlla l'accesso. Il database memorizza i dati ed è il database a cui le applicazioni tentano di accedere quando interagiscono con MySQL.
Alcune applicazioni creano un database come parte del loro processo di configurazione, ma altre richiedono che tu crei un database tu stesso e ne parli all'applicazione.
Per creare un database, accedi a mysql
shell ed eseguire il comando seguente, sostituendo demodb
con il nome del database che vuoi creare:
CREATE DATABASE demodb;
Dopo aver creato il database, è possibile verificarne la creazione eseguendo una query per elencare tutti i database. L'esempio seguente mostra la query e l'output di esempio:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demodb |
| mysql |
+--------------------+
3 rows in set (0.00 sec)
Aggiungi un utente del database
Quando le applicazioni si connettono al database utilizzando l'utente root, di solito hanno più privilegi di quelli necessari. È possibile aggiungere utenti che le applicazioni possono utilizzare per connettersi al nuovo database. Nell'esempio seguente, un utente denominato demouser viene creato.
-
Per creare un nuovo utente, esegui il seguente comando in
mysql
guscio:INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
-
Quando apporti modifiche all'utente tabella in mysql database, di' a MySQL di leggere le modifiche cancellando i privilegi, come segue:
FLUSH PRIVILEGES;
-
Verifica che l'utente sia stato creato eseguendo nuovamente una query SELECT:
SELECT User, Host, authentication_string FROM mysql.user; +------------------+-----------+-------------------------------------------+ | User | Host | Password | +------------------+-----------+-------------------------------------------+ | root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 | | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 | | demouser | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 | +------------------+-----------+-------------------------------------------+
Concedi i permessi utente del database
Subito dopo aver creato un nuovo utente, non ha privilegi. L'utente può accedere, ma non può essere utilizzato per apportare modifiche al database.
-
Concedi all'utente le autorizzazioni complete per il tuo nuovo database eseguendo il seguente comando:
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
-
Elimina i privilegi per rendere ufficiale la modifica eseguendo il comando seguente:
FLUSH PRIVILEGES;
-
Per verificare che tali privilegi siano impostati, eseguire il comando seguente:
SHOW GRANTS FOR 'demouser'@'localhost'; 2 rows in set (0.00 sec)
MySQL restituisce i comandi necessari per riprodurre i permessi di quell'utente se dovessi ricostruire il server.
USAGE on \*.\*
significa che gli utenti non ottengono privilegi su nulla per impostazione predefinita. Quel comando è sovrascritto dal secondo comando, che è la concessione che hai eseguito per il nuovo database.+-----------------------------------------------------------------------------------------------------------------+ | Grants for demouser@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' | | GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost' | +-----------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
Riepilogo
Se stai solo creando un database e un utente, hai finito. I concetti trattati qui dovrebbero darti un solido inizio da cui partire per saperne di più.
Articoli correlati
- Configura il server MySQL sul sistema operativo Ubuntu
- Reimposta una password di root MySQL