So finden Sie das MySQL-Datenverzeichnis über die Befehlszeile in Windows


186

Unter Linux konnte ich mit dem Befehl das MySQL-Installationsverzeichnis finden which mysql. Aber ich konnte keine in Fenstern finden. Ich habe es versucht echo %path%und es entstanden viele Pfade zusammen mit dem Pfad zum MySQL-Bin.

Ich wollte das MySQL-Datenverzeichnis über die Befehlszeile in Windows zur Verwendung im Stapelverarbeitungsprogramm finden. Ich möchte auch das MySQL-Datenverzeichnis über die Linux-Befehlszeile finden. Ist es möglich? oder wie können wir das machen

In meinem Fall befindet sich das MySQL-Datenverzeichnis im Installationsordner, dh ..MYSQL\mysql server 5\dataes kann jedoch auf jedem Laufwerk installiert werden. Ich möchte, dass es von der Befehlszeile zurückgegeben wird.

Antworten:


296

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 (unter 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 einfachen und doppelten Anführungszeichen invertieren .

Übrigens, wenn which mysqlSie unter Linux ausführen, wie Sie gesagt haben, erhalten Sie das Installationsverzeichnis unter Linux nicht. Sie erhalten nur den Binärpfad, der sich /usr/binunter Linux befindet, aber Sie sehen, dass die MySQL-Installation mehrere Ordner zum Speichern von Dateien verwendet.


Wenn Sie den Wert von datadir als Ausgabe benötigen und nur diesen ohne Spaltenüberschriften usw., aber keine GNU-Umgebung (awk | grep | sed ...) haben, 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_schemaDatenbank von mysql aus und deaktiviert die tabellarische Ausgabe und die Spaltenüberschriften.

Ausgabe unter Linux:

/var/lib/mysql

Ich habe mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | verwendet grep "datadir" | awk "{print $ 2}" 'zum Ermitteln des tatsächlichen Datenpfadpfads unter Linux. Wie kann nur dieser Pfad in Windows gefunden werden?
Prabhu

1
@ Prabhu Sie können es einfach mit dem mysqlBefehl tun . Es sind keine weiteren Werkzeuge erforderlich. Überprüfen Sie mein Update
hek2mgl

Der Befehl wird unter Linux in Ordnung ausgeführt. Es funktioniert nicht gut in Windows XP. Der erste Befehl gibt einen Fehler aus - Sie haben einen Fehler in Ihrer SQL-Syntax in der Nähe von Variable_Name = 'dirname'. Der zweite Befehl gibt Fehler - unbekannte Datenbank information_schema
Prabhu

1
Damit dies unter Windows funktioniert, kehren Sie einfach die doppelten / einfachen Anführungszeichen um:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera

1
Danke dafür! Ausführen von "SHOW VARIABLES WHERE Variable_Name =" datadir ""; In meiner phpmyadmin-Datenbank konnte ich den Speicherort des Datenbankverzeichnisses finden.
Aurgho Bhattacharjee


5

Wenn Sie Datadir unter Linux oder Windows suchen möchten, 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}'

1

Ausgabe unter Windows:
Sie können einfach diesen Befehl verwenden, es ist sehr einfach!

1. kein Passwort von MySQL:

mysql ?

2. Passwort von MySQL haben:

mysql -uroot -ppassword mysql ?

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein


1

Sie können die vollständige Liste der MySQL-Serveroptionen anzeigen, indem Sie ausführen

mysqld --verbose --help

Um beispielsweise den Pfad zum Datenverzeichnis unter Linux herauszufinden , können Sie Folgendes ausführen:

mysqld --verbose --help | grep ^datadir

Beispielausgabe:

datadir                                     /var/lib/mysql/

0
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();

0

Überprüfen Sie, ob sich das DataVerzeichnis in befindet "C:\ProgramData\MySQL\MySQL Server 5.7\Data". Hier befindet es sich auf meinem Computer. Jemand könnte dies hilfreich finden.


0

Verwenden Sie den folgenden Befehl von der CLI-Schnittstelle

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.