risposta-alla-domanda-sullo-sviluppo-web-bd.com

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

In Linux ho trovato la directory di installazione di mysql con il comando which mysql. Ma non ho trovato nessuno in Windows. Ho provato echo %path% e ne sono derivati ​​molti percorsi insieme a mysql bin. 

Volevo trovare la directory dei dati mysql dalla riga di comando in Windows per l'utilizzo nel programma batch. Mi piacerebbe 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 installazione, ad esempio ..MYSQL\mysql server 5\data, ma potrebbe essere installata su qualsiasi unità. Voglio che venga restituito dalla riga di comando.

167
Prabhu

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

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

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

Btw, quando esegui which mysql in Linux come hai detto, non avrai la directory installation su Linux. Avrai solo il percorso binario, che è /usr/bin su Linux, ma vedi l'installazione di mysql che utilizza più cartelle per archiviare i file.


Se hai bisogno del valore di datadir come output, e solo quello, senza intestazioni di colonna etc, ma non hai un ambiente GNU (awk | grep | sed ...), 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 information_schema di mysql e disabiliterà l'intestazione tabulare e le intestazioni delle colonne.

Output su Linux:

/var/lib/mysql
275
hek2mgl

Puoi provare questo- 

mysql> select @@datadir;

PS- Funziona su ogni piattaforma.

140
As_913

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

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

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

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

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

mysqld --verbose --help

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

mysqld --verbose --help | grep ^datadir

Esempio di output:

datadir                                     /var/lib/mysql/
1
Eugene Yarmash
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();

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

0
bluegrounds

Utilizzare il comando mellow dell'interfaccia CLI

[[email protected]~]# mysqladmin variables -p<password> | grep datadir
0
Rakib