webentwicklung-frage-antwort-db.com.de

Verwendung von Mysql in der Befehlszeile in osx - Befehl nicht gefunden?

Ich versuche, MySQL auf meinem Mac OSX 10.9.5 zum Laufen zu bringen. Ich habe den neuesten version14.145.6.21 Community Server installiert. Ich bin zu den Systemeinstellungen gegangen und habe den MySQL-Server gestartet, dann das Terminal gestartet und folgendes eingegeben:

/usr/local/mysql/bin/mysql --version gibt die Version zurück, aber wenn ich einen beliebigen mysql-Befehl eingebe, erhalte ich command not found. Ich habe auch Sudo mysql_secure_installation, mysql -u root --password=password versucht.

Ich habe zwar ein Webhosting mit MySQL etc installiert, möchte es aber in der Befehlszeile erst einmal in den Griff bekommen.

40
user1574598

Es gibt also nur wenige Stellen, an denen das Terminal nach Befehlen sucht. Diese Orte werden in Ihrer $PATH-Variablen gespeichert. Stellen Sie sich dies als eine globale Variable vor, bei der das Terminal nach einem Befehl sucht. In der Regel sehen Binärdateien so aus, wie normalerweise auf den/bin Ordner verwiesen wird. 

/bin Ordner enthält viele ausführbare Dateien. Das stellt sich als Befehl heraus. Diese unterschiedlichen Ordnerpositionen werden in einer globalen Variablen gespeichert, d. H. $PATH, getrennt durch :.

Normalerweise kümmert sich das Programm bei der Installation normalerweise um die Aktualisierung von PATH und das Feststellen, dass alle Befehle in meinem bin-Ordner enthalten sein können. 

Es stellt sich heraus, dass MySql es bei der Installation nicht macht, also müssen wir es manuell tun. 

Wir machen es mit folgendem Befehl, 

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

Wenn Sie es zerlegen, ist export selbsterklärend. Betrachten Sie es als eine Aufgabe. Also export eine Variable PATH mit dem Wert old $PATH concat mit neuer bin, d. H. /usr/local/mysql/bin

Auf diese Weise stehen uns nach Ausführung alle Befehle in /usr/local/mysql/bin zur Verfügung. 

Hier gibt es einen kleinen Haken. Stellen Sie sich ein Terminalfenster als eine Instanz des Programms vor und vielleicht ist $PATH eine Klassenvariable (vielleicht). Beachten Sie, dass dies eine reine Annahme ist. Beim Schließen verlieren wir also die neue Aufgabe. Und wenn wir das Terminal wieder öffnen, haben wir keinen Zugriff mehr auf unseren Befehl, da er beim Export zuletzt im flüchtigen Hauptspeicher abgelegt wurde. 

Jetzt müssen wir jedes Mal, wenn wir Terminal verwenden, unsere mysql-Binärdateien exportieren lassen. Also müssen wir auf unserem Weg konkurrieren. 

Möglicherweise wissen Sie, dass unser Terminal etwas verwendet, das dotfiles verwendet, um die Konfiguration bei der Terminalinitialisierung zu laden. Ich stelle mir vor, es ist eine Menge von Dingen, die jedes Mal, wenn eine neue Instanz des Terminals erstellt wird, an den Konstrukteur übergeben werden (wieder eine Annahme, aber nahe an dem, was sie tun könnte). Ja, jetzt hast du den Punkt, was wir tun werden. 

.bash_profile ist eine der bekanntesten dotfile

Also in folgendem Befehl, 

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

Was wir tun, ist, das Ergebnis von echo zu speichern, d. H. Die Ausgabezeichenfolge in ~/.bash_profile

Wie wir oben bereits erwähnt haben, wird jedes Mal, wenn wir das Terminal oder die Instanz des Terminals öffnen, unsere dotfiles geladen. Also .bash_profile wird geladen und export, die wir oben angehängt haben, wird ausgeführt und somit wird unser globaler $PATH aktualisiert und wir bekommen alle Befehle in /usr/local/mysql/bin

P.s. 

wenn Sie den ersten Befehlsexport nicht direkt ausführen, sondern nur den zweiten, um ihn zu erhalten? Dann müssen Sie für die aktuell ausgeführte Instanz des Terminals

source ~/.bash_profile

Dies weist unser Terminal an, diese bestimmte Datei neu zu laden.

118
kishanio

Das bedeutet, dass/usr/local/mysql/bin/mysql nicht in der PATH-Variable enthalten ist. 

Führen Sie entweder/usr/local/mysql/bin/mysql aus, um Ihre mysql-Shell abzurufen.

oder geben Sie dies in Ihr Terminal ein:

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

um das zu Ihrer PATH-Variable hinzuzufügen, so dass Sie einfach mysql ausführen können, ohne den Pfad anzugeben

20
Justin Kiang

für mich funktionierten die folgenden Befehle:

$ brew install mysql

$ brew services start mysql

Sie können einfach den .bash_profile Ändern, indem Sie MySQL $PATH Wie folgt hinzufügen:
export PATH=$PATH:/usr/local/mysql/bin.

Ich habe folgendes gemacht:

1- Öffnen Sie das Terminal und dann $ nano .bash_profile Oder $ vim .bash_profile

2- Fügen Sie den folgenden PATH-Code zu .bash_profile Hinzu

# 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- Speichern Sie die Datei.

4- Aktualisiere das Terminal mit $ source ~/.bash_profile

5- Geben Sie zur Bestätigung Terminal $ mysql --version Ein.

6- Die Ausgabe sollte ungefähr so ​​aussehen:

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

Das Terminal ist jetzt so konfiguriert, dass es die MySQL-Befehle aus $PATH Liest, die sich im .bash_profile Befinden.

1
Mora

Sie müssen einen Symlink zu Ihrer MySQL-Installation erstellen, wenn es sich nicht um die neueste Version von MySQL handelt.

$ brew link --force [email protected]

siehe diesen Beitrag von Alex Todd

0
bisi

Ändern Sie Ihr bash-Profil wie folgt <> $ vim ~/.bash_profile export PATH =/usr/local/mysql/bin: $ PATH Nachdem Sie diese gespeichert haben, können Sie mysql eingeben, um die mysql-Eingabeaufforderung einzulesen Ihr Terminal.

0
Pravin