Cara menemukan direktori data mysql dari baris perintah di windows

186

Di linux saya bisa menemukan direktori instalasi mysql dengan perintah which mysql. Tetapi saya tidak dapat menemukannya di windows. Saya mencoba echo %path%dan menghasilkan banyak path bersama path ke mysql bin.

Saya ingin mencari direktori data mysql dari baris perintah di windows untuk digunakan dalam program batch. Saya juga ingin mencari direktori data mysql dari baris perintah linux. Apa itu mungkin? atau bagaimana kita bisa melakukan itu?

Dalam kasus saya, direktori data mysql ada di folder instalasi yaitu ..MYSQL\mysql server 5\dataNamun mungkin diinstal pada drive apa pun. Saya ingin mengembalikannya dari baris perintah.

Prabhu
sumber

Jawaban:

298

Anda dapat mengeluarkan kueri berikut dari baris perintah:

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

Output (di 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 (pada 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/         |
+---------------------------+-----------------------------------------------------------+

Atau jika Anda hanya ingin menggunakan data dir:

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

Perintah-perintah ini juga berfungsi pada Windows, tetapi Anda harus membalikkan tanda kutip tunggal dan ganda .

Btw, ketika mengeksekusi which mysqldi Linux seperti yang Anda katakan, Anda tidak akan mendapatkan direktori instalasi di Linux. Anda hanya akan mendapatkan path biner, yang ada /usr/bindi Linux, tetapi Anda melihat instalasi mysql menggunakan banyak folder untuk menyimpan file.


Jika Anda memerlukan nilai datadir sebagai output, dan hanya itu, tanpa header kolom dll, tetapi Anda tidak memiliki lingkungan GNU (awk | grep | sed ...) kemudian gunakan baris perintah berikut:

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

Perintah akan memilih nilai hanya dari information_schemadatabase internal mysql dan menonaktifkan output kolom dan header kolom.

Output di Linux:

/var/lib/mysql
hek2mgl
sumber
Saya menggunakan mysql -uroot -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir" | grep "datadir" | awk "{print $ 2}" 'untuk menemukan jalur datadir aktual di linux. Bagaimana hanya menemukan jalur itu di windows?
Prabhu
1
@ Prabhu Anda dapat melakukannya hanya dengan mysqlperintah. Tidak diperlukan alat lain. Periksa pembaruan saya
hek2mgl
Perintah dijalankan ok di linux. Itu tidak berjalan dengan baik di windows xp. perintah pertama memberi kesalahan - Anda memiliki kesalahan dalam sintaks sql Anda di dekat tempat Variable_Name = 'dirname'. Perintah kedua memberikan kesalahan - database tidak diketahui information_schema
Prabhu
1
Untuk membuat ini bekerja di bawah Windows, cukup membalikkan tanda kutip ganda / tunggal:mysql -uUSER -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Leonardo Herrera
1
Terima kasih untuk ini! Menjalankan "SHOW VARIABLES WHERE Variable_Name =" datadir ""; pada database phpmyadmin saya membantu saya menemukan lokasi direktori dabase.
Aurgho Bhattacharjee
159

Anda dapat mencoba ini-

mysql> select @@datadir;

PS- Ia bekerja di setiap platform.

As_913
sumber
10
Berfungsi dengan baik pada OS X
Gilles De Mey
10
Bekerja dengan baik di Ubuntu.
jmunsch
7
Bekerja dengan baik pada Win10
Hasan
3
Bekerja pada Server 2012 r2
SimonS
2
Bekerja pada RHEL 6
Alessandro Blasetti
5

jika Anda ingin menemukan datadir di linux atau windows Anda dapat melakukan perintah berikut

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

jika Anda tertarik untuk menemukan datadir, Anda dapat menggunakan perintah grep & awk

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

Output pada Windows:
Anda bisa menggunakan perintah ini, sangat mudah!

1. tidak ada kata sandi MySQL:

mysql ?

2. memiliki kata sandi MySQL:

mysql -uroot -ppassword mysql ?

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

xgqfrms
sumber
1

Anda dapat melihat daftar lengkap opsi server MySQL dengan menjalankan

mysqld --verbose --help

Misalnya, untuk mengetahui jalur ke direktori data di Linux, Anda dapat menjalankan:

mysqld --verbose --help | grep ^datadir

Contoh output:

datadir                                     /var/lib/mysql/
Eugene Yarmash
sumber
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();
GigolNet Guigolachvili
sumber
0

Periksa apakah Datadirektori tersebut ada "C:\ProgramData\MySQL\MySQL Server 5.7\Data". Di sinilah di komputer saya. Seseorang mungkin menganggap ini bermanfaat.

bluegrounds
sumber
0

Gunakan perintah di bawah ini dari antarmuka CLI

[root@localhost~]# mysqladmin variables -p<password> | grep datadir
Rakib
sumber