4.2.4 Connessione al server MySQL usando le opzioni di comando
Questa sezione descrive l’uso delle opzioni della riga di comando per specificare come stabilire la connessione al server MySQL, per client come mysql o mysqldump. Per informazioni su come stabilire le connessioni usando stringhe di connessione di tipo URI o coppie chiave-valore, per client come MySQL Shell, vedi Sezione 4.2.5, “Connessione al server usando stringhe di tipo URI o coppie chiave-valore”. Per ulteriori informazioni se non si riesce a connettersi, vedere Sezione 6.2.21, “Risoluzione dei problemi di connessione a MySQL”.
Per un programma client per connettersi al server MySQL, deve utilizzare i parametri di connessione appropriati, come il nome dell’host dove il server è in esecuzione e il nome utente e la password del vostro account MySQL. Ogni parametro di connessione ha un valore predefinito, ma è possibile sovrascrivere i valori predefiniti come necessario utilizzando le opzioni del programma specificate sulla linea di comando o in un file di opzioni.
Gli esempi qui riportati usano il programma client mysql, ma i principi si applicano ad altri client come mysqldump, mysqladmin o mysqlshow.
Questo comando invoca mysql senza specificare alcun parametro di connessione esplicito:
mysql
Poiché non ci sono opzioni di parametro, si applicano i valori predefiniti:
-
Il nome host predefinito è
localhost
. Su Unix, questo ha un significato speciale, come descritto più avanti. -
Il nome utente predefinito è
ODBC
su Windows o il tuo nome di login Unix su Unix. -
Non viene inviata alcuna password perché né
--password
né-p
è dato. -
Per mysql, il primo argomento non opzione è preso come nome del database predefinito. Poiché non c’è un tale argomento, mysql non seleziona alcun database predefinito.
Per specificare esplicitamente il nome dell’host e il nome dell’utente, così come una password, fornire le opzioni appropriate sulla linea di comando. Per selezionare un database predefinito, aggiungi un argomento con il nome del database. Esempi:
mysql --host=localhost --user=myname --password=password mydbmysql -h localhost -u myname -ppassword mydb
Per le opzioni di password, il valore della password è opzionale:
-
Se si usa un’opzione
--password
o-p
e si specifica un valore di password, non ci deve essere spazio tra--password=
o-p
e la password che lo segue. -
Se usi
--password
o-p
ma non specifichi un valore di password, il programma client ti chiede di inserire la password. La password non viene visualizzata mentre la si inserisce. Questo è più sicuro che dare la password sulla riga di comando, che potrebbe permettere ad altri utenti del sistema di vedere la riga della password eseguendo un comando come ps. Vedere Sezione 6.1.2.1, “Linee guida dell’utente finale per la sicurezza della password”. -
Per specificare esplicitamente che non c’è una password e che il programma client non dovrebbe richiederne una, usare l’opzione
--skip-password
.
Come appena detto, includere il valore della password nella riga di comando è un rischio per la sicurezza. Per evitare questo rischio, specificate l’opzione --password
o -p
senza alcun valore di password successivo:
mysql --host=localhost --user=myname --password mydbmysql -h localhost -u myname -p mydb
Quando l’opzione --password
o -p
è data senza valore di password, il programma client stampa un prompt e aspetta che l’utente inserisca la password. (In questi esempi, mydb
non viene interpretato come una password perché è separato dalla precedente opzione password da uno spazio).
Su alcuni sistemi, la routine di libreria che MySQL usa per richiedere una password limita automaticamente la password a otto caratteri. Questa limitazione è una proprietà della libreria di sistema, non di MySQL. Internamente, MySQL non ha alcun limite per la lunghezza della password. Per aggirare la limitazione sui sistemi che ne sono affetti, specificate la vostra password in un file di opzioni (vedi Sezione 4.2.2.2, “Uso dei file di opzioni”). Un’altra soluzione è quella di cambiare la vostra password MySQL con un valore che abbia otto o meno caratteri, ma questo ha lo svantaggio che le password più corte tendono ad essere meno sicure.
I programmi client determinano quale tipo di connessione effettuare come segue:
-
Se l’host non è specificato o è
localhost
, avviene una connessione all’host locale:-
Su Windows, il client si connette usando la memoria condivisa, se il server è stato avviato con la variabile di sistema
shared_memory
abilitata a supportare connessioni in memoria condivisa. -
Su Unix, i programmi MySQL trattano il nome dell’host
localhost
in modo speciale, in un modo che è probabilmente diverso da quello che ci si aspetta rispetto ad altri programmi basati sulla rete: il client si connette utilizzando un file socket Unix. L’opzione--socket
o la variabile d’ambienteMYSQL_UNIX_PORT
possono essere usate per specificare il nome del socket.
-
-
Su Windows, se
host
.
(punto), o TCP/IP non è abilitato e--socket
non è specificato o l’host è vuoto, il client si connette usando una named pipe, se il server è stato avviato con la variabile di sistemanamed_pipe
abilitata a supportare le connessioni named-pipe. Se le connessioni named-pipe non sono supportate o se l’utente che effettua la connessione non è un membro del gruppo Windows specificato dalla variabile di sistemanamed_pipe_full_access_group
, si verifica un errore. -
Altrimenti, la connessione usa il TCP/IP.
L’opzione --protocol
permette di usare un particolare protocollo di trasporto anche quando altre opzioni normalmente portano all’uso di un protocollo diverso. Cioè, --protocol
specifica esplicitamente il protocollo di trasporto e sovrascrive le regole precedenti, anche per localhost
.
Solo le opzioni di connessione che sono rilevanti per il protocollo di trasporto selezionato sono usate o controllate. Altre opzioni di connessione sono ignorate. Per esempio, con --host=localhost
su Unix, il client tenta di connettersi al server locale usando un file socket Unix, anche se viene data un’opzione --port
o -P
per specificare un numero di porta TCP/IP.
Per assicurarsi che il client effettui una connessione TCP/IP al server locale, usare --host
o -h
per specificare un valore di nome host di 127.0.0.1
(invece di localhost
), oppure l’indirizzo IP o il nome del server locale. Puoi anche specificare esplicitamente il protocollo di trasporto, anche per localhost
, usando l’opzione --protocol=TCP
. Esempi:
mysql --host=127.0.0.1mysql --protocol=TCP
Se il server è configurato per accettare connessioni IPv6, i client possono connettersi al server locale su IPv6 usando --host=::1
. Vedere Sezione 5.1.13, “Supporto IPv6”.
Su Windows, per forzare un client MySQL ad usare una connessione named-pipe, specificare l’opzione --pipe
o --protocol=PIPE
, o specificare .
(punto) come nome host. Se il server non è stato avviato con la variabile di sistema named_pipe
abilitata a supportare le connessioni named-pipe o se l’utente che effettua la connessione non è un membro del gruppo Windows specificato dalla variabile di sistema named_pipe_full_access_group
, si verifica un errore. Utilizzare l’opzione --socket
per specificare il nome della pipe se non si vuole utilizzare il nome predefinito della pipe.
Le connessioni ai server remoti usano TCP/IP. Questo comando si connette al server in esecuzione su remote.example.com
utilizzando il numero di porta predefinito (3306):
mysql --host=remote.example.com
Per specificare esplicitamente un numero di porta, utilizzare l’opzione --port
o -P
:
mysql --host=remote.example.com --port=13306
È possibile specificare un numero di porta anche per le connessioni a un server locale. Tuttavia, come indicato in precedenza, le connessioni a localhost
su Unix utilizzano un file socket per impostazione predefinita, quindi a meno che non si forzi una connessione TCP/IP come descritto in precedenza, qualsiasi opzione che specifichi un numero di porta viene ignorata.
Per questo comando, il programma usa un file socket su Unix e l’opzione --port
viene ignorata:
mysql --port=13306 --host=localhost
Per far sì che il numero di porta venga utilizzato, forzare una connessione TCP/IP. Per esempio, invoca il programma in uno di questi modi:
mysql --port=13306 --host=127.0.0.1mysql --port=13306 --protocol=TCP
Per ulteriori informazioni sulle opzioni che controllano come i programmi client stabiliscono le connessioni al server, vedere Sezione 4.2.3, “Opzioni di comando per la connessione al server”.
È possibile specificare i parametri di connessione senza inserirli sulla linea di comando ogni volta che si invoca un programma client:
-
Specificare i parametri di connessione nella sezione
di un file di opzioni. La sezione pertinente del file potrebbe assomigliare a questa:
host=host_nameuser=user_namepassword=password
Per maggiori informazioni, vedere Sezione 4.2.2.2, “Utilizzo dei file di opzione”.
-
Alcuni parametri di connessione possono essere specificati usando variabili d’ambiente. Esempi:
-
Per specificare l’host per mysql, usare
MYSQL_HOST
. -
Su Windows, per specificare il nome utente di MySQL, usa
USER
.
Per una lista di variabili d’ambiente supportate, vedi Sezione 4.9, “Variabili d’ambiente”.
-