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.
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
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"'"
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}'