MySQL :: MySQL 8.0 Reference Manual :: 4.2.4 Connessione al server MySQL usando le opzioni di comando

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-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’ambiente MYSQL_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 sistema named_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 sistema named_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”.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *