Bạn có thể phát hành các truy vấn sau đây từ dòng lệnh:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'
Output (trên 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 (trên hệ điều hành 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/ |
+---------------------------+-----------------------------------------------------------+
Hoặc nếu bạn chỉ muốn sử dụng thư mục dữ liệu:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
Điều này cũng sẽ hoạt động trên Windows.
Btw, khi thực hiện which mysql
trong Linux như bạn đã nói, bạn sẽ không nhận được thư mục cài đặt trên Linux. Bạn sẽ chỉ nhận được đường dẫn nhị phân, là /usr/bin
trên Linux, nhưng bạn thấy cài đặt mysql đang sử dụng nhiều thư mục để lưu trữ tệp.
Nếu bạn cần giá trị của datadir như đầu ra, và chỉ có vậy, mà không tiêu đề cột vv, nhưng bạn không có một môi trường GNU (awk | grep | sed ...) sau đó sử dụng lệnh sau line:
mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'
Lệnh này sẽ chọn giá trị chỉ từ cơ sở dữ liệu nội bộ và đầu cột của mysql.
Output trên Linux:
/var/lib/mysql
tôi đã sử dụng mysql -p -uroot -e 'SHOW VARIABLES ĐÂU variable_name = "datadir" | grep "datadir" | awk "{print $ 2}" 'để tìm đường dẫn datadir thực trong linux. Làm thế nào có thể tìm thấy chỉ có con đường trong cửa sổ? – Prabhu
@Prabhu Bạn có thể làm điều đó chỉ với lệnh 'mysql'. Không có công cụ nào khác được yêu cầu. Kiểm tra cập nhật của tôi – hek2mgl
Lệnh thực hiện ok trong linux. Nó không thực thi tốt trong windows xp. lệnh đầu tiên cho lỗi - bạn có lỗi trong cú pháp sql của bạn gần nơi Variable_Name = 'dirname'. Lệnh thứ hai cung cấp cho cơ sở dữ liệu lỗi - unknown information_schema – Prabhu