Slik finner du mysql-datakatalogen fra kommandolinjen i windows

I linux kunne jeg finne mysql-installasjonskatalogen med kommandoen which mysql. Men jeg kunne ikke finne noen i windows. Jeg prøvde echo %path% og det resulterte i mange baner sammen med banen til mysql bin.

Jeg ønsket å finne mysql-datakatalogen fra kommandolinjen i Windows for bruk i batchprogram. Jeg vil også finne mysql-datakatalogen fra Linux-kommandolinjen. Er det mulig? eller hvordan kan vi gjøre det?

I mitt tilfelle er mysql-datakatalogen i installasjonsmappen, dvs. ..MYSQL \ mysql server 5 \ data Den kan imidlertid installeres på hvilken som helst stasjon. Jeg vil få den returnert fra kommandolinjen.

Løsning

Du kan sende følgende spørring fra kommandolinjen:

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

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

Eller hvis du bare vil bruke datadir:

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

Disse kommandoene fungerer også på Windows, men du må invertere enkle og doble anførselstegn.

Btw, når du kjører which mysql i Linux som du fortalte, får du ikke * installasjonskatalogen på Linux. Du får bare den binære banen, som er / usr / bin på Linux, men du ser at mysql-installasjonen bruker flere mapper for å lagre filer.


Hvis du trenger verdien av datadir som utdata, og bare det, uten kolonneoverskrifter osv, men du ikke har et GNU-miljø (awk|grep|sed ...), bruk følgende kommandolinje:

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

Kommandoen vil bare velge verdien fra mysql's interne information_schema database og deaktiverer tabellutdata og kolonneoverskrifter.

Utdata på Linux:

/var/lib/mysql
Kommentarer (10)

Du kan prøve dette...

mysql> select @@datadir;

PS- Det fungerer på alle plattformer.

Kommentarer (6)

hvis du vil finne datadir i linux eller windows kan du gjøre følgende kommando

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

Hvis du er interessert i å finne datadir, kan du bruke grep og awk-kommandoen.

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