2013-07-31 42 views
134

Trong linux, tôi có thể tìm thấy thư mục cài đặt mysql bằng lệnh which mysql. Nhưng tôi không thể tìm thấy bất kỳ cửa sổ nào. Tôi đã thử echo %path% và nó dẫn đến nhiều đường dẫn cùng với đường dẫn đến thùng rác mysql.Cách tìm thư mục dữ liệu mysql từ dòng lệnh trong cửa sổ

Tôi muốn tìm thư mục dữ liệu mysql từ dòng lệnh trong cửa sổ để sử dụng trong chương trình theo lô. Tôi cũng muốn tìm thư mục dữ liệu mysql từ dòng lệnh linux. Có thể không? hoặc làm sao chúng ta có thể làm điều đó?

Trong trường hợp của tôi, thư mục dữ liệu mysql nằm trong thư mục cài đặt tức là ..MYSQL\mysql server 5\data Tuy nhiên, nó có thể được cài đặt trên bất kỳ ổ đĩa nào. Tôi muốn đưa nó trở lại từ dòng lệnh.

Trả lời

228

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 
+0

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

+1

@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

+0

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

5

nếu bạn muốn tìm datadir trong Linux hoặc cửa sổ bạn có thể làm sau lệnh

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

nếu bạn quan tâm để tìm datadir bạn có thể sử dụng grep & lệnh awk

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

Trên lệnh đầu tiên của bạn, bạn đã bỏ lỡ một dấu nháy đơn: mysql - uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' – DrupalFever

+0

Cảm ơn bạn @DrupalFever, bình luận cập nhật –

124

Bạn có thể thử điều này-

mysql> select @@datadir; 

PS- Nó hoạt động trên mọi nền tảng.

+7

Hoạt động tốt trên OS X –

+7

Hoạt động tốt trên Ubuntu. – jmunsch

+3

Hoạt động tốt trên Win7 – Ralf

0
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(); 
0

Output trên Windows:
bạn chỉ có thể sử dụng lệnh này, nó là rất dễ dàng!

1. không có mật khẩu của MySQL:

mysql ? 

2. có mật khẩu của MySQL:

mysql -uroot -ppassword mysql ? 

enter image description here enter image description here

0

Bạn có thể xem danh sách đầy đủ Tùy chọn máy chủ MySQL bằng cách chạy

mysqld --verbose --help 

Ví dụ, để tìm ra đường dẫn đến data directory trên Linux, bạn có thể chạy: sản lượng

mysqld --verbose --help | grep ^datadir 

Ví dụ:

datadir          /var/lib/mysql/ 
0

Kiểm tra xem thư mục Data là trong "C:\ProgramData\MySQL\MySQL Server 5.7\Data" . Đây là nơi nó nằm trên máy tính của tôi. Ai đó có thể thấy điều này hữu ích.

0

Sử dụng dưới lệnh từ giao diện CLI

[[email protected]~]# mysqladmin variables -p<password> | grep datadir 
Các vấn đề liên quan