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.
È 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
Puoi provare questo-
mysql> select @@datadir;
PS- Funziona su ogni piattaforma.
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}'
È 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/
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.
Utilizzare il comando mellow dell'interfaccia CLI
[[email protected]~]# mysqladmin variables -p<password> | grep datadir