Как узнать путь до файлов базы данных MySQL/MariaDB в Linux и Windows
Файлы базы MySQL/MariaDB данных хранятся на жёстком диске. По умолчанию это папка data внутри директории исполнимых файлов MySQL (в Windows) или в директории /var/lib/mysql/ (Linux).
В настройках можно указать любое расположение базы данных MySQL — необязательно в папке с установленной программой, это может быть произвольная папка. Более того, на серверах с высокой нагрузкой рекомендуется файлы баз данных выносить на отдельный диск, чтобы не снижалась производительность из-за одновременного доступа к диску для чтения баз данных и для запуска исполнимых файлов.
Иногда непросто разобраться в сложной структуре веб-сервера, иногда нужно в скрипте реализовать возможность определять путь до файлов баз данных — например, в целях настройки автоматического резервного копирования.
Далее будет показано, как в командной строке можно определить, где расположены файлы баз данных MySQL в Windows и в Linux.
Определение пути без подключения к серверу СУБД
В Windows
В ОС Windows для получения пути до базы данных введите команду:
.\mysqld --verbose --help | findstr /b "datadir"
datadir c:\Server\data\DB\data\
Если вы получите сообщение, что команда mysqld не найдена, значит нужно указать путь до исполнимого файла mysqld или перейти в директорию с исполнимым файлом. Предположим, MySQL/MariaDB установлена в папке C:\Server\bin\mariadb, тогда переходим в поддиректорию bin, содержащую исполнимые файлы, и выполняем там указанную выше команду:
cd C:\Server\bin\mariadb\bin .\mysqld --verbose --help | findstr /b "datadir"
В Linux
В операционной системе Linux выполните следующую команду и она покажет вам путь до базы данных:
mysqld --verbose --help | grep ^datadir
Переменная @@datadir;
Этот способ работает на всех системах одинаково. Нужно выполнить подключение к системе управления базой данных. Например, для пользователя root это делается так:
mysql -u root -p
И затем в консоли MySQL/MariaDB выполните:
select @@datadir;
Как видно на скриншоте, путь до файлов базы данных на сервере, где введена команда, c:\Server\data\DB\data\.
Ещё один вариант выполнения данной команды:
mysql -u root -p -e "select @@datadir;"
Как узнать настройки директорий в MySQL/MariaDB
Чтобы показать информацию о всех настройках директорий СУБД сервера, выполнит команду:
mysql -u root -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"
Пример вывода в Windows для MariaDB:
+---------------------------+---------------------------------------+ | Variable_name | Value | +---------------------------+---------------------------------------+ | aria_sync_log_dir | NEWFILE | | basedir | C:\Server\bin\mariadb\ | | character_sets_dir | C:\Server\bin\mariadb\share\charsets\ | | datadir | c:\Server\data\DB\data\ | | innodb_data_home_dir | | | innodb_log_group_home_dir | .\ | | innodb_tmpdir | | | lc_messages_dir | | | plugin_dir | C:\Server\bin\mariadb\lib\plugin\ | | slave_load_tmpdir | C:\Windows\TEMP | | tmpdir | C:\Windows\TEMP | +---------------------------+---------------------------------------+
Чтобы вывести только datadir выполните команду:
mysql -u root -p -e "SHOW VARIABLES WHERE Variable_Name = 'datadir'"
Как узнать путь до базы данных MySQL/MariaDB в скрипте
Если вы используете полученное значение пути до папки баз данных, например, в скрипте, то есть вам нужно только значение без лишних символов псевдографики, которая имитирует таблицу, то примените следующую команду:
mysql -s -N -u root -p information_schema -e "SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = 'datadir'"
Примечание: если в Linux у вас проблемы с последними командами, то инвертируйте (поменяйте местами) одинарные и двойные кавычки.
Также не забывайте менять пользователя root на имя вашего пользователя.
Связанные статьи:
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (57.5%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (57.5%)
- Изучение MySQL / MariaDB для начинающих (57.5%)
- 20 команд MySQL (mysqladmin) для администратора базы данных в Linux (57.5%)
- Как переместить директорию с данными MySQL/MariaDB в новое расположение на Ubuntu 16.10 или 17.04 (57.5%)
- Ошибка «PHP Fatal error: Uncaught mysqli_sql_exception: No database selected» (РЕШЕНО) (RANDOM — 57.5%)
MySQL – где физически хранятся базы данных
По умолчанию MySQL хранит данные в подпапке data в директории куда он сам установлен.
Допустим есть база данных test, значит все содержащиеся в ее таблицах данные по умолчанияю лежат в %MYSQL_DIR%/data/test.
Чтобы найти где физически расположены ваши mysql базы данных, вам сначала стоит залезть в директорию мускла и глянуть там упомянутую папку data, если она есть и в ней есть папки, совпадающие с названиями ваших бд – дальше можно не читать.
Если ее нет, но у вас есть доступ к mysql, то достаточно исполнить
mysql> select @@datadir;
+————————+
| @@datadir |
+————————+
| /usr/local/mysql/data/ |
+————————+
1 row in set (0.00 sec)
Если доступа к мусклу нет, а вам все-таки хочется добраться до файлов, то посмотрите как запущен процесс mysql сервера
bash-3.2$ ps -ax | grep mysql
274 ?? 0:57.42 /usr/local/mysql/bin/mysqld —basedir=/usr/local/mysql —datadir=/usr/local/mysql/data —plugin-dir=/usr/local/mysql/lib/plugin —user=mysql —log-error=/usr/local/mysql/data/hl.local.err —pid-file=/usr/local/mysql/data/hl.local.pid
Нас интересует путь в переменной
—datadir=/usr/local/mysql/data
Или переменная, в которой указывается путь до mysql конфига. У меня ее нет, но выглядит примерно так
—defaults-file=/etc/mysql/my.cnf
или
—defaults-extra-file=/etc/mysql/mysql/my.cnf
А в файле конфигурации ищем строку:
datadir=
Category: Базы данных
Tags: MySQL
Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-includes/class-wp-comment-query.php on line 399
Рубрики
Теги
Архив
- November 2015 (1)
- August 2014 (1)
- June 2014 (1)
- February 2014 (1)
- January 2014 (1)
- December 2013 (1)
- November 2013 (1)
- October 2013 (1)
- March 2013 (1)
- December 2012 (1)
- October 2012 (1)
- June 2012 (2)
- October 2011 (1)
- September 2011 (3)
- August 2011 (2)
- July 2011 (2)
- June 2011 (1)
- April 2011 (2)
- March 2011 (1)
- February 2011 (2)
- January 2011 (1)
- July 2010 (3)
- May 2010 (1)
- April 2010 (4)
- March 2010 (8)
- February 2010 (4)
Как посмотреть, где хранятся файлы баз данных в СУБД MySQL
Все файлы баз данных в СУБД MySQL хранятся на жёстком диске. Файлы с базами хранятся в директории /var/lib/mysql. Но путь можно изменить. В инструкции расскажем о том, как посмотреть, где хранятся файлы баз данных в СУБД MySQL в операционной системе Ubuntu 20.04.
Где хранятся файлы базы данных
Все файлы с базами хранятся в директории /var/lib/mysql. Чтобы убедиться в этом можно выполнить команду sudo grep -R ‘datadir’ /etc/mysql/ которая отобразит полный путь до файлов, в которых хранятся базы данных:

Если перейти по предложенному пути — /var/lib/mysql то в директории будут расположены все необходимые файлы c баз данных. Команду для перехода в директорию выполняется под учетной записью пользователя root иначе будет ошибка Permission denied:


Дальше пользователь узнает где находятся базы данных MySQL. Также можно выполнить команду mysqld с параметрами —verbose и —help которая отобразит путь хранения файлов с базами данных. Данная команда аналогична предыдущей команде.

Если появилась необходимость в изменении пути хранения файлов баз данных, то необходимо открыть конфигурационный файл MySQL от имени суперпользователя (root) при помощи любого текстового редактора. В данном примере, как мы узнали выше, конфигурационный файл находится по пути /etc/mysql/mysql.conf.d/mysqld.cnf. Команда для его редактирования будет выглядеть следующим образом:

В новом файле, который откроется,необходимо найти блок [mysqld] и в нем параметр с именем datadir в котором можно пописать нужный путь, где будут храниться базы данных. После того как путь был задан необходимо сохранить изменения, закрыть текстовый редактор и перезапустить СУБД при помощи команды:

Теперь вы знаете, где хранятся базы данных в СУБД MySQL.
Где физически хранится база данных(создана в Workbench)?

Банальный вопрос, но я не могу найти, где именно хранятся файлы базы данных. В MySQL Workbench была создана БД с названием paymentservice с таблицей mobilepayment. Мне нужно скопировать БД на другой ПК. В C:\Program Files\MySQL\MySQL Server 5.6\data я ничего не нашел связанного с моей базой данных. Может я неправильно что-то понимаю и не там ищу?
- Вопрос задан более трёх лет назад
- 8868 просмотров
Комментировать
Решения вопроса 1

Сергей delphinpro @delphinpro
frontend developer
Базу обычно копируют с помощью экспорта-импорта. На исходной машине создаете дамп данных, на целевой делает импорт этого дампа. Можно использовать PMA, SypexDumper или штатную консольную утилиту mysqldump.
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать