Linux sistemoje galėjau rasti mysql diegimo katalogą su komanda which mysql
. Tačiau windows sistemoje jo neradau. Išbandžiau echo %path%
ir gavau daugybę kelių kartu su keliu į mysql bin.
Norėjau rasti mysql duomenų katalogą iš komandinės eilutės windows sistemoje, kad galėčiau naudoti paketinėje programoje. Taip pat norėčiau rasti mysql duomenų katalogą iš Linux komandinės eilutės. Ar tai įmanoma? arba kaip tai padaryti?
Mano atveju mysql duomenų katalogas yra diegimo aplanke, t. y. ...MYSQL\mysql serveris 5\data
Tačiau jis gali būti įdiegtas bet kuriame diske. Noriu, kad jis būtų grąžintas iš komandinės eilutės.
Iš komandinės eilutės galite pateikti tokią užklausą:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'
Išvestis (Linux sistemoje):
+---------------------------+----------------------------+
| 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 |
+---------------------------+----------------------------+
Išvestis (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/ |
+---------------------------+-----------------------------------------------------------+
Arba jei norite naudoti tik duomenis dir:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
Šios komandos veikia ir "Windows" sistemoje, tačiau reikia sukeisti viengubas ir dvigubas kabutes**.
Btw, kai Linux sistemoje įvykdysite which mysql
, kaip nurodėte, Linux sistemoje negausite įdiegimo katalogo. Gausite tik dvejetainį kelią, kuris Linux sistemoje yra /usr/bin
, tačiau matote, kad mysql diegimas naudoja kelis aplankus failams saugoti.
Jei jums reikia išvesti tik datadir reikšmę ir tik ją, be stulpelių antraščių ir t. t., bet neturite GNU aplinkos (awk|grep|sed ...), tuomet naudokite šią komandinę eilutę:
mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'
Ši komanda parinks reikšmę tik iš vidinės mysql duomenų bazės information_schema
ir išjungs lentelių išvedimą bei stulpelių antraštes.
Išvestis Linux sistemoje:
/var/lib/mysql
jei norite rasti datadir Linux arba Windows, galite atlikti šią komandą
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
jei norite surasti datadir, galite naudoti grep &; awk komandą
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' | grep 'datadir' | awk '{print $2}'