Come trovare la directory dei dati mysql dalla riga di comando in Windows


186

In Linux ho trovato la directory di installazione di mysql con il comando which mysql. Ma non sono riuscito a trovarne nessuno in Windows. Ho provato echo %path%e ha prodotto molti percorsi insieme al percorso di mysql bin.

Volevo trovare la directory dei dati mysql dalla riga di comando in Windows per l'uso nel programma batch. Vorrei anche trovare la directory dei dati mysql dalla riga di comando di Linux. È possibile? o come possiamo farlo?

Nel mio caso, la directory dei dati mysql si trova nella cartella di ..MYSQL\mysql server 5\datainstallazione, tuttavia potrebbe essere installata su qualsiasi unità. Voglio farlo restituire dalla riga di comando.

Risposte:


298

È possibile emettere la seguente query dalla riga di comando:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'

Output (su 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                       |
+---------------------------+----------------------------+

Output (su 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/         |
+---------------------------+-----------------------------------------------------------+

O se si desidera utilizzare solo la directory dei dati:

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'

Questi comandi funzionano anche su Windows, ma è necessario invertire le virgolette singole e doppie .

A proposito, quando esegui which mysqlin Linux come hai detto, non otterrai la directory di installazione su Linux. Otterrai solo il percorso binario, che è /usr/binsu Linux, ma vedi che l'installazione di mysql sta usando più cartelle per archiviare i file.


Se hai bisogno del valore di datadir come output e solo quello, senza intestazioni di colonna ecc., Ma non hai un ambiente GNU (awk | grep | sed ...), usa la seguente riga di comando:

mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

Il comando selezionerà il valore solo dal information_schemadatabase interno di mysql e disabiliterà l'output tabulare e le intestazioni di colonna.

Uscita su Linux:

/var/lib/mysql

Ho usato mysql -uroot -p -e 'MOSTRA VARIABILI DOVE Variable_Name = "datadir" | grep "datadir" | awk "{print $ 2}" 'per trovare il percorso reale del datadir in Linux. Come posso trovare solo quel percorso in Windows?
Prabhu,

1
@Prabhu Puoi farlo solo con il mysqlcomando. Non sono richiesti altri strumenti. Controlla il mio aggiornamento
hek2mgl

Il comando esegue ok in linux. Non funziona bene in Windows XP. il primo comando dà errore - hai un errore nella sintassi sql vicino a dove Variable_Name = 'dirname'. Il secondo comando dà errore - database sconosciuto information_schema
Prabhu

1
Per farlo funzionare su Windows, inverti le virgolette doppie / singole:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera,

1
Grazie per questo! In esecuzione "SHOW VARIABLES WHERE Variable_Name =" datadir ""; sul mio database phpmyadmin mi ha aiutato a trovare la posizione della directory dabase.
Aurgho Bhattacharjee,


5

se vuoi trovare il datadir in linux o windows puoi fare il seguente comando

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'

se sei interessato a trovare il datadir puoi usare il comando grep & awk

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'

1

Output su Windows:
puoi semplicemente usare questo comando, è molto semplice!

1. nessuna password di MySQL:

mysql ?

2. avere la password di MySQL:

mysql -uroot -ppassword mysql ?

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


1

È possibile visualizzare l'elenco completo delle opzioni del server MySQL eseguendo

mysqld --verbose --help

Ad esempio, per scoprire il percorso della directory dei dati su Linux, è possibile eseguire:

mysqld --verbose --help | grep ^datadir

Esempio di output:

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

Controlla se la Datadirectory è in "C:\ProgramData\MySQL\MySQL Server 5.7\Data". Questo è dove si trova sul mio computer. Qualcuno potrebbe trovarlo utile.


0

Utilizzare il comando muggito dall'interfaccia CLI

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.