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.

Prabhu
quelle

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
hek2mgl
quelle
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
159

Sie können dies versuchen-

mysql> select @@datadir;

PS: Es funktioniert auf jeder Plattform.

As_913
quelle
9
Funktioniert gut unter OS X
Gilles De Mey
10
Funktioniert gut unter Ubuntu.
jmunsch
7
Funktioniert gut auf Win10
Hasan
3
Funktioniert auf Server 2012 r2
SimonS
2
Arbeiten an RHEL 6
Alessandro Blasetti
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}'
Amrit Shrestha
quelle
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

xgqfrms
quelle
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/
Eugene Yarmash
quelle
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();
GigolNet Guigolachvili
quelle
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.

Bluegrounds
quelle
0

Verwenden Sie den folgenden Befehl von der CLI-Schnittstelle

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Rakib
quelle