2013-07-31 2 views
134

В linux я могу найти каталог установки mysql с командой which mysql. Но я не мог найти никого в окнах. Я попробовал echo %path%, и это привело к множеству путей и пути к mysql bin.Как найти каталог данных mysql из командной строки в windows

Я хотел найти каталог данных mysql из командной строки в окнах для использования в пакетной программе. Я также хотел бы найти каталог данных mysql из командной строки linux. Является ли это возможным? или как мы можем это сделать?

В моем случае каталог данных mysql находится в установочной папке, то есть ..MYSQL\mysql server 5\data Однако он может быть установлен на любом диске. Я хочу вернуть его из командной строки.

ответ

228

Вы можете оформить следующий запрос из командной строки:

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

Output (на 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 (на 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/   | 
+---------------------------+-----------------------------------------------------------+ 

Или если вы хотите использовать только данные для передачи данных:

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

Это будет работать и на Windows.

Btw, при исполнении which mysql в Linux, как вы сказали, вы не получите установку в Linux. Вы получите только двоичный путь, который равен /usr/bin, но вы видите, что установка mysql использует несколько папок для хранения файлов.


Если вам нужно значение DATADIR как выход, и только то, что, без заголовков столбцов и т.д., но у вас нет среды GNU (AWK | Grep | СЭД ...), затем используйте следующую команду линия:

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

команда будет выбрать значение только из внутренней базы данных MySQL в information_schema и отключает табличные выходные и заголовки столбцов.

Выход на Linux:

/var/lib/mysql 
+0

Я использовал MySQL -uroot -p -e «SHOW ПЕРЕМЕННОГО WHERE VARIABLE_NAME = "каталогу_данный" | grep "datadir" | awk "{print $ 2}" 'для поиска фактического пути datadir в linux. Как найти только этот путь в окнах? – Prabhu

+1

@Prabhu Вы можете сделать это только с помощью команды 'mysql'. Никаких других инструментов не требуется. Проверьте мое обновление – hek2mgl

+0

Команда выполняет ok в linux. Он плохо работает в windows xp. первая команда дает ошибку - у вас есть ошибка в синтаксисе sql рядом с Variable_Name = 'dirname'. Вторая команда дает ошибку - неизвестная база данных information_schema – Prabhu

5

, если вы хотите, чтобы найти каталогу_данные в Linux или Windows, вы можете сделать следующую команду

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

, если вы заинтересованы, чтобы найти каталогу_данные вы можете использовать Grep & awk command

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

В вашей первой команде вы пропустили одну цитату: mysql - uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"' – DrupalFever

+0

Спасибо @DrupalFever, комментарий обновлен –

124

Вы можете попробовать это -

mysql> select @@datadir; 

PS- Он работает на каждой платформе.

+7

Прекрасно работает на OS X –

+7

Прекрасно работает на Ubuntu. – jmunsch

+3

Прекрасно работает на 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

Выход на Windows:
вы можете просто использовать эту команду, это очень просто!

1. нет пароля MySQL:

mysql ? 

2. есть пароль MySQL:

mysql -uroot -ppassword mysql ? 

enter image description here enter image description here

0

Вы можете увидеть полный список Параметры сервера MySQL, запустив

mysqld --verbose --help 

Например, чтобы узнать путь к data directory на Linux, вы можете запустить:

mysqld --verbose --help | grep ^datadir 

Пример вывода:

datadir          /var/lib/mysql/ 
0

Проверьте каталог Data в "C:\ProgramData\MySQL\MySQL Server 5.7\Data" , Это где-то на моем компьютере. Кто-то может найти это полезным.

0

Использование ниже команды из интерфейса CLI

[[email protected]~]# mysqladmin variables -p<password> | grep datadir 
Смежные вопросы