2014-10-24 6 views
28

Sto cercando di installare mysql sul mio Mac OSX 10.9.5. Ho installato l'ultima versione del server della comunità 14.145.6.21. Sono andato alle preferenze di sistema e ho avviato il server mysql, quindi ho lanciato il terminale e digitato questo:Utilizzo di Mysql nella riga di comando in osx - comando non trovato?

/usr/local/mysql/bin/mysql --version che restituisce la versione, ma quando digito qualsiasi tipo di comando mysql ottengo command not found. Ho anche provato sudo mysql_secure_installation, mysql -u root --password=password.

Ho un web hosting con mysql ecc installato, ma voglio essere in grado di fare i conti con esso nella riga di comando prima.

+0

cosa c'è nel vostro '$ path'? – admdrew

risposta

84

quindi ci sono pochi posti dove terminale guarda per comandi. Questi luoghi sono memorizzati nella variabile $PATH. Pensala come una variabile globale in cui il terminale scorre per cercare qualsiasi comando. Di solito, i binari guardano in che modo viene di solito fatto riferimento alla cartella/bin.

/bin la cartella contiene molti file eseguibili al suo interno. Risulta che questo è un comando. Questo differenti percorsi delle cartelle sono memorizzati all'interno di una variabile globale cioè $PATH separati da :

Ora di solito i programmi al momento dell'installazione si prende cura di aggiornare PATH & dire al vostro terminale che hey posso essere tutti i comandi all'interno della mia cartella bin.

Risulta che MySql non lo fa al momento dell'installazione, quindi dobbiamo farlo manualmente.

lo facciamo seguendo il comando,

export PATH=$PATH:/usr/local/mysql/bin 

Se si scomposizione, export si spiega da sé. Pensalo come un incarico. Così export una variabile PATH con valore storico $PATH concat con il nuovo bin cioè /usr/local/mysql/bin

In questo modo, dopo l'esecuzione di esso tutti i comandi all'interno /usr/local/mysql/bin sono a nostra disposizione.

C'è un piccolo fermo qui. Pensa a una finestra di terminale come a un'istanza di programma e forse qualcosa come $PATH è una variabile di classe (forse). Nota questo è pura supposizione. Così da vicino perdiamo il nuovo incarico. E se riapriamo il terminale non avremo più accesso al nostro comando perché l'ultimo quando abbiamo esportato, è stato memorizzato nella memoria primaria che è volatile.

Ora abbiamo bisogno di avere i nostri binari mysql esportati ogni volta che usiamo il terminale. Quindi dobbiamo persistere concat nel nostro percorso.

Potreste essere consapevoli del fatto che il nostro terminale utilizzando qualcosa chiamato dotfiles per caricare la configurazione sul inizializzazione del terminale. Mi piace pensare che sia come set di cose passati a costruire ogni volta che viene creata una nuova istanza di terminale (sempre un'ipotesi ma vicina a ciò che potrebbe fare). Quindi sì, ora capisci cosa stiamo andando.

.bash_profile è uno dei primario nota dotfile.

Così nel seguente comando,

echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile 

Quello che stiamo facendo è salvare risultato di echo cioè stringa di output a ~/.bash_profile

Così ora, come abbiamo osservato in precedenza ogni volta che apriamo terminale o istanza del terminale sono caricati i nostri dotfiles. Così .bash_profile è caricato rispettivamente, e export che accodato sopra è gestito & così un nostro globale $PATH viene aggiornato e si ottengono tutti i comandi all'interno /usr/local/mysql/bin.

P.S.

se non si esegue prima esportazione di comando direttamente, ma solo in esecuzione secondo per persistono? Che per la corrente istanza in esecuzione del terminale è necessario,

source ~/.bash_profile 

Questo dice il nostro terminale di ricaricare quel particolare file.

+4

Tre ore trascorse cercando di ottenere questo ha funzionato. Questa è di gran lunga la migliore risposta che ho trovato dopo ore di ricerca. Sono passato da Windows a Mac. – Grim

+0

Ottima spiegazione! –

+0

grazie mille ... Gesù è più difficile che mi aspettassi. – carinlynchin

17

Ciò significa/usr// mysql/bin/mysql locale non è nella variabile PATH ..

O eseguire/usr/local/mysql/bin/mysql per ottenere la shell mysql,

o digitare questo nel vostro terminale:

PATH=$PATH:/usr/local/mysql/bin 

di aggiungere che per la variabile PATH in modo da poter semplicemente eseguire mysql senza specificare il percorso

+0

Grazie - Ho appena modificato manualmente il mio percorso in/usr/local/mysql/bin/'prima di aggiungerlo al percorso. Ho quindi digitato 'ls' e posso vedere tutti i file mysql, ma quando digito' mysql' ho ancora il comando non trovato? – user1574598

+0

la variabile PATH e la directory di lavoro corrente sono due cose diverse. $ PATH, che è impostato dalla linea che ti ho dato sopra, è dove verrà visualizzato il sistema quando scrivi semplicemente un comando standalone senza il percorso assoluto/relativo. –

+0

quando hai cambiato la tua directory di lavoro in/usr/local/mysql/bin usando 'cd', devi invocare mysql digitando'./Mysql' per far sapere al sistema di usare mysql nella directory corrente, e non provare a trovalo in una delle directory nella tua variabile PATH –

0

si può semplicemente modificato il .bash_profile aggiungendo il MySQL $PATH come il seguente:
export PATH=$PATH:/usr/local/mysql/bin.

ho fatto la seguente:

1- Aprire Terminal, allora $ nano .bash_profile o $ vim .bash_profile

2- Aggiungere il seguente codice PATH per il .bash_profile

# Set architecture flags 
export ARCHFLAGS="-arch x86_64" 
# Ensure user-installed binaries take precedence 
export PATH=/usr/local/mysql/bin:$PATH 
# Load .bashrc if it exists 
test -f ~/.bashrc && source ~/.bashrc 

3- Salvare il file.

4- Refresh Terminal utilizzando $ source ~/.bash_profile

5- Per verificare, digitare Terminal $ mysql --version

6- Dovrebbe stampare l'output simile al seguente:

$ mysql Ver 14.14 Distrib 5.7.17, for macos10.12 (x86_64)

il terminale è ora configurato per leggere i comandi MySQL da $PATH che viene inserito nello .bash_profile.

0

modificare il tuo profilo bash come segue <> $ vim ~/.bash_profile export PATH =/usr/local/mysql/bin: $ PATH volta che il suo salvataggio è possibile digitare mysql per portare prompt di MySQL nel vostro terminale .

+0

Potrebbe aggiungere blocchi di codice per maggiore chiarezza. –