In Linux konnte ich das mysql-Installationsverzeichnis mit dem Befehl which mysql
finden. Aber ich konnte keine in Fenstern finden. Ich habe echo %path%
ausprobiert und es ergeben sich viele Pfade zusammen mit dem Pfad zu MySQL bin.
Ich wollte das MySQL-Datenverzeichnis von der Befehlszeile in Windows zur Verwendung im Stapelverarbeitungsprogramm finden. Ich möchte auch das mysql-Datenverzeichnis von der Linux-Befehlszeile aus finden. Ist es möglich? oder wie können wir das machen?
In meinem Fall befindet sich das Verzeichnis mysql data im Installationsordner, d. H. ..MYSQL\mysql server 5\data
. Es kann jedoch auf jedem Laufwerk installiert werden. Ich möchte, dass es von der Befehlszeile zurückgegeben wird.
Sie können die folgende Abfrage über die Befehlszeile ausgeben:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'
Ausgabe (unter Linux):
+---------------------------+----------------------------+
| Variable_name | Value |
+---------------------------+----------------------------+
| basedir | /usr |
| character_sets_dir | /usr/share/mysql/charsets/ |
| datadir | /var/lib/mysql/ |
| innodb_data_home_dir | |
| innodb_log_group_home_dir | ./ |
| lc_messages_dir | /usr/share/mysql/ |
| plugin_dir | /usr/lib/mysql/plugin/ |
| slave_load_tmpdir | /tmp |
| tmpdir | /tmp |
+---------------------------+----------------------------+
Ausgabe (auf macOS Sierra):
+---------------------------+-----------------------------------------------------------+
| Variable_name | Value |
+---------------------------+-----------------------------------------------------------+
| basedir | /usr/local/mysql-5.7.17-macos10.12-x86_64/ |
| character_sets_dir | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/charsets/ |
| datadir | /usr/local/mysql/data/ |
| innodb_data_home_dir | |
| innodb_log_group_home_dir | ./ |
| innodb_tmpdir | |
| lc_messages_dir | /usr/local/mysql-5.7.17-macos10.12-x86_64/share/ |
| plugin_dir | /usr/local/mysql/lib/plugin/ |
| slave_load_tmpdir | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/ |
| tmpdir | /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/ |
+---------------------------+-----------------------------------------------------------+
Oder wenn Sie nur das Datenverzeichnis verwenden möchten:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
Diese Befehle funktionieren auch unter Windows, Sie müssen jedoch die Anführungszeichen in doppelte Anführungszeichen setzen.
Übrigens, wenn Sie which mysql
in Linux ausführen, wie Sie gesagt haben, wird das Verzeichnis installation unter Linux nicht angezeigt. Sie erhalten nur den binären Pfad (/usr/bin
unter Linux). Die Installation von mysql verwendet jedoch mehrere Ordner zum Speichern von Dateien.
Wenn Sie den Wert von datadir als Ausgabe benötigen und nur diesen, ohne Spaltenüberschriften usw., aber keine GNU - Umgebung (awk | grep | sed ...) verwenden, verwenden Sie die folgende Befehlszeile:
mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'
Der Befehl wählt den Wert nur aus der internen information_schema
-Datenbank von mysql aus und deaktiviert die Tabellenausgabe und die Spaltenüberschriften.
Ausgabe unter Linux:
/var/lib/mysql
Sie können dies versuchen-
mysql> select @@datadir;
PS: Es funktioniert auf jeder Plattform.
wenn Sie in Linux oder Windows nach Datadir suchen, können Sie den folgenden Befehl ausführen
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
wenn Sie daran interessiert sind, Datadir zu finden, können Sie den Befehl grep & awk verwenden
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'
Sie können die vollständige Liste der MySQL-Serveroptionen anzeigen, indem Sie ausführen
mysqld --verbose --help
Um beispielsweise den Pfad zum Verzeichnis data unter Linux herauszufinden, können Sie Folgendes ausführen:
mysqld --verbose --help | grep ^datadir
Beispielausgabe:
datadir /var/lib/mysql/
public function variables($variable="")
{
return empty($variable) ? mysql_query("SHOW VARIABLES") : mysql_query("SELECT @@$variable");
}
/*get datadir*/
$res = variables("datadir");
/*or get all variables*/
$res = variables();
Prüfen Sie, ob das Verzeichnis Data
in "C:\ProgramData\MySQL\MySQL Server 5.7\Data"
liegt. Hier ist es auf meinem Computer. Jemand könnte das hilfreich finden.
Verwenden Sie den folgenden Befehl von der CLI-Schnittstelle
[[email protected]~]# mysqladmin variables -p<password> | grep datadir