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

In linux ho potuto trovare la directory di installazione di mysql con il comando which mysql. Ma non sono riuscito a trovarne nessuna in Windows. Ho provato con echo %path% e ha dato come risultato molti percorsi insieme al percorso di mysql bin.

Volevo trovare la directory dei dati mysql dalla riga di comando in windows per usarla 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 è nella cartella di installazione cioè ..MYSQL\mysql server 5\data Potrebbe essere installata su qualsiasi unità comunque. Voglio ottenerlo dalla riga di comando.

Soluzione

Potete emettere la seguente query dalla riga di comando:

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

Risultato (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                       |
+---------------------------+----------------------------+

Uscita (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 vuoi solo i dati dir usare:

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

Questi comandi funzionano anche su Windows, ma dovete invertire gli apici singoli e doppi.

Btw, quando si esegue which mysql in Linux come hai detto, non si ottiene la directory di installazione su Linux. Otterrai solo il percorso binario, che è /usr/bin su Linux, ma vedi che l'installazione di mysql sta usando più cartelle per memorizzare 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 ...) allora usa la seguente linea 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 database interno di mysql information_schema e disabilita l'output tabellare e le intestazioni di colonna.

Output su Linux:

/var/lib/mysql
Commentari (10)

Puoi provare questo...

mysql> select @@datadir;

PS- Funziona su ogni piattaforma.

Commentari (6)

se volete trovare datadir in linux o windows potete fare il seguente comando

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

se siete interessati a trovare datadir è possibile utilizzare grep & awk comando

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