Làm thế nào để tìm thư mục dữ liệu mysql từ dòng lệnh trong windows


186

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ỳ trong các cửa sổ. Tôi đã thử echo %path%và nó đã dẫn đến nhiều đường dẫn cùng với đường dẫn đến mysql bin.

Tôi muốn tìm thư mục dữ liệu mysql từ dòng lệnh trong windows để sử dụng trong chương trình bó. 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 thế nào 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, nghĩa là ..MYSQL\mysql server 5\datanó có thể được cài đặt trên bất kỳ ổ đĩa nào. Tôi muốn có được nó trở lại từ dòng lệnh.

Câu trả lời:


296

Bạn có thể đưa ra truy vấn sau từ dòng lệnh:

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

Đầu ra (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                       |
+---------------------------+----------------------------+

Đầu ra (trên 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"'

Các lệnh này cũng hoạt động trên Windows, nhưng bạn cần đảo ngược dấu ngoặc đơn và dấu ngoặc kép .

Btw, khi thực thi which mysqlLinux 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 /usr/bintrê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 làm đầu ra và chỉ có điều đó, không có tiêu đề cột, v.v., nhưng bạn không có môi trường GNU (awk | grep | sed ...) thì hãy sử dụng dòng lệnh sau:

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

Lệnh sẽ chỉ chọn giá trị từ information_schemacơ sở dữ liệu nội bộ của mysql và vô hiệu hóa đầu ra dạng bảng và các tiêu đề cột.

Đầu ra trên Linux:

/var/lib/mysql

Tôi đã sử dụng mysql -uroot -p -e 'SHOW VARIABLES WHERE Var biến_Name = "datadir" | grep "datadir" | awk "{print $ 2}" 'để tìm đường dẫn datadir thực tế trong linux. Làm thế nào chỉ có thể tìm thấy con đường đó trong các cửa sổ?
Bohhu

1
@Prabhu Bạn có thể làm điều đó chỉ với mysqllệnh. Không có công cụ khác được yêu cầu. Kiểm tra cập nhật của tôi
hek2mgl

Lệnh thực thi ok trong linux. Nó không thực thi tốt trong windows xp. lệnh đầu tiên báo lỗi - bạn có lỗi trong cú pháp sql của bạn gần nơi Var biến_Name = 'dirname'. Lệnh thứ hai đưa ra lỗi - thông tin cơ sở dữ liệu không xác
định_schema

1
Để thực hiện công việc này trong Windows, chỉ cần đảo ngược dấu ngoặc kép / đơn:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera

1
Cảm ơn vì điều đó! Chạy "SHOW VARIABLES WHERE Var biến_Name =" datadir ""; trên cơ sở dữ liệu phpmyadmin của tôi đã giúp tôi tìm vị trí của thư mục dabase.
Aurgho Bhattacharjee

159

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.


9
Hoạt động tốt trên OS X
Gilles De Mey

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

7
Hoạt động tốt trên Win10
Hasan

3
Hoạt động trên Máy chủ 2012 r2
SimonS

2
Hoạt động trên RHEL 6
Alessandro Blasetti

5

Nếu bạn muốn tìm datadir trong linux hoặc windows, bạn có thể thực hiện theo lệnh sau

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

Nếu bạn muốn tìm datadir, bạn có thể sử dụng lệnh grep & awk

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

1

Đầu ra trên Windows:
bạn chỉ cần sử dụng lệnh này, nó 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 ?

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


1

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

mysqld --verbose --help

Ví dụ: để tìm đường dẫn đến thư mục dữ liệu trên Linux, bạn có thể chạy:

mysqld --verbose --help | grep ^datadir

Ví dụ đầu ra:

datadir                                     /var/lib/mysql/

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

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


0

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

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.