Обновлено: 20.07.2020
Опубликовано: 12.07.2018
Тематические термины: MySQL, MariaDB, Linux.
В статье пойдет речь о просмотре и смене пути расположения файлов баз данных MySQL. Приведенные примеры выполнены на CentOS 7 — также они будут работать на Ubuntu и многих других дистрибутивах Linux, FreeBSD и Windows.
Просмотр путей
Командная строка
Оболочка MySQL
phpMyAdmin
Смена расположения баз
Смотрите также
Посмотреть текущий путь
Увидеть, где хранятся базы можно несколькими способами.
Способ 1. Командная строка Linux.
В командной строке вводим:
systemctl status mysql || systemctl status mariadb
* для Windows используем оснастку Службы. Для FreeBSD используем команду service mysql-server stop.
Пример ответа:
mariadb.service — MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Ср 2018-07-11 15:38:16 MSK; 23h ago
Process: 1067 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 992 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 1066 (mysqld_safe)
CGroup: /system.slice/mariadb.service
??1066 /bin/sh /usr/bin/mysqld_safe —basedir=/usr
??1248 /usr/libexec/mysqld —basedir=/usr —datadir=/var/lib/mysql —plugin-dir=/usr/lib64/mysql/plugin —log-error=/var/log/mariadb/mariadb.log —pid-file=/var/run/mariadb/mariadb.pid —socket…
* в выделенном фрагменте /var/lib/mysql — путь до файлов базы данных.
Способ 2. Командная оболочка MySQL.
Данный способ является более универсальным — он подойдет для любого дистрибутива Linux, FreeBSD, Windows. Также, метод универсален с точки зрения метода установки MySQL — чистая установка или в составе готовой сборки (Open Server, Xampp, Denwer …).
Заходим под пользователем root в командную оболочку СУБД:
mysql -uroot -p
Вводим:
> SHOW VARIABLES WHERE Variable_Name LIKE «datadir»;
или
> select @@datadir;
Пример ответа:
+—————+——————+
| Variable_name | Value |
+—————+——————+
| datadir | /var/lib/mysql/ |
+—————+——————+
Способ 3. Через phpMyAdmin.
Если у нас нет доступа к серверу по SSH или удаленному рабочему столу, запрос можно сделать в phpMyAdmin:
Смена пути
Останавливаем сервер баз данных:
systemctl stop mysql || systemctl stop mariadb
Создаем новый каталог, например:
mkdir /home/mysql
Переносим содержимое старого каталога в новый:
mv /var/lib/mysql/* /home/mysql/
Задаем права и владельца для нового каталога:
chown mysql:mysql /home/mysql
chmod 755 /home/mysql
Открываем конфигурационный файл my.cnf:
vi /etc/my.cnf.d/server.cnf
* в разных версиях mysql и mariadb могут использоваться разные пути:
- /etc/my.cnf.
- /etc/my.cnf.d/server.cnf.
- /etc/my.cnf.d/mariadb-server.cnf.
- В Windows это my.ini.
и задаем новый путь:
[mysqld]
datadir = /home/mysql
Запускаем сервер:
systemctl start mysql || systemctl start mariadb
Смотрите также
Установка MariaDB на CentOS 7
Как восстановить базу MySQL
Создание и удаление баз в MySQL/MariaDB
Экспорт баз данных MariaDB/MySQL в phpMyAdmin
Была ли полезна вам эта инструкция?
Да Нет
От автора: а что это вы под ногами ищете? Базу данных? Поверьте, скорее все, она никуда не делась, и лежит «целехонькая» на вашем ПК или сервере! Там уже смотрели? Наверное, вы просто не знаете, где хранятся данные MySQL. Об этом мы вам сегодня и расскажем.
Импорт-экспорт данных в MySQL
Чаще всего найти утерянные базы данных нужно для импорта или копирования. К счастью, для этого не обязательно знать место их «дислокации» на дисковом пространстве. Программные интерфейсы для работы с СУБД MySQL имеют встроенные средства переноса и создания копий БД и таблиц.
В наших «широтах» самой востребованной остается оболочка phpMyAdmin, предназначенная для администрирования системы управления БД MySQL. На примере этого веб-приложения мы и рассмотрим встроенные средства, которые позволят нам остаться в неведении, где находится MySQL.
В phpMyAdmin создание копий баз данных происходит через вкладку «Экспорт». Для дублирования БД или таблицы слева в списке выберете нужный для копирования элемент. После этого перейдите в раздел «Экспорт». В окне параметров в подразделе «Способ экспорта» должно быть установлено значение «Обычный». Затем в списке выделите базу данных (таблицу). После чего нажимаете в самом низу окна «Ок».
Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк
Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде.
Сможете устроиться на позицию Junior-разработчика.
Узнать подробнее
Командная стажировка под руководством тимлида
90 000 рублей средняя зарплата PHP-разработчика
3 проекта в портфолио для старта карьеры
В результате программа создаст копию и сохранит ее на клиентской стороне. Вся работа с веб-приложением происходит через браузер, поэтому созданный дубликат БД нужно искать в папке загрузок.
Место хранения оригиналов баз
Знание встроенного функционала phpMyAdmin поможет быстро создать копии нужных данных. Но если на компьютере не установлена ни одна из программных оболочек для администрирования СУБД. А вам нужно перенести БД на другой сервер. Или изменить хранящуюся в таблицах информацию. При этом выполнять запросы придется через консоль, где обязательно прописывается путь к БД. Как видите знать, где хранится база данных MySQL, важно и нужно.
Вот еще один пример «из жизни начинающего админа». Предположим, первоначально вы пользовались Denwer. Но в один «непогожий» день вы нечаянно удалили часть файлов локального сервера. В результате чего он больше не запускается, и вы начинаете «рыть» оставшиеся папки в надежде спасти хотя бы базы данных. Но в этом случает также «удобнее» знать, где копать. Вот пример пути, где в веб-сервере хранятся БД: F:Webserverusrlocalmysql-5.5data, где F – это диск, на котором был установлен Denwer.
Для открытия файлов скопированных БД потребуется phpMyAdmin. Если вы установили сервер СУБД без оболочки, тогда по умолчанию место, где хранятся базы данных MySQL, находится здесь: C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
Файл my.ini
Все описанные методы связаны с осуществлением поиска (в зависимости от варианта использования СУБД) той или иной папки, в которой программы (или сервер) сохраняют созданные базы. Но неужели пользователь никак не может повлиять на это, и самостоятельно указать место на дисковом пространстве MySQL, где хранятся все БД.
Такой вариант настройки был предусмотрен создателями этой системы управления. Все основные параметры задаются в файле my.ini. Он расположен в той же директории, куда установлена и система СУБД.
Данный тип файлов относится к конфигурационным, и открывается с помощью обычного «Блокнота». Чтобы задать «свое» место для всех созданным БД, откройте файл my.ini. Затем найдите в нем раздел [mysqld], и в параметре datadir пропишите путь к нужной папке. После сохранения внесенных изменений (Файл> Сохранить) все существующие базы будут перенесены в указанное вами место файловой системы компьютера или сервера.
Средства SQL
Все описанные выше варианты узнать в MySQL, где лежит БД, являются второстепенными. Потому что СУБД не понимает человеческой речи и письменности. Для общения с ней существует специальный язык SQL. Аббревиатура переводится как язык структурированных запросов (structured query language). То есть с помощью операторов и команд этого языка можно влиять на структуру содержащейся в источнике информации: делать выборки, обновлять данные, вставлять или удалять.
Но не будем слишком забираться в «дремучий лес» профессиональных знаний, нас интересует единственная команда SHOW. Точнее, один из ее вариантов SHOW VARIABLES. Эта команда SQL используется в администрировании для получения служебной информации о конкретном сервере или базе.
SHOW VARIABLES выводит список переменных и их значений из INFORMATION_SCHEMA, которая представляет собой «служебную» БД, в которой содержится информация обо всех базах, подключенных к серверу. Пример запроса: SHOW VARIABLES;
Но из всего этого списка нас интересует лишь одна переменная, с помощью которой можно «узнать» у сервера MySQL, где хранится база. Это переменная basedir, в значение которой записан путь к основной директории. Пример запроса: SHOW VARIABLES LIKE ‘basedir’;
Профессия PHP-разработчик с нуля до PRO
Готовим PHP-разработчиков с нуля
Вы с нуля научитесь программировать сайты и веб-приложения на PHP, освоите фреймворк
Laravel, напишете облачное хранилище и поработаете над интернет-магазином в команде.
Сможете устроиться на позицию Junior-разработчика.
Узнать подробнее
Командная стажировка под руководством тимлида
90 000 рублей средняя зарплата PHP-разработчика
3 проекта в портфолио для старта карьеры
А сейчас прекращайте понапрасну «рыться» в файловой системе своего ПК. Теперь вы точно знаете, как правильно «спросить» у СУБД MySQL, где хранятся базы. Надеемся, нам удалось научить вас этому!
You can issue the following query from the command line:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'
Output (on 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 (on 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/ |
+---------------------------+-----------------------------------------------------------+
Or if you want only the data dir use:
mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir"'
These commands work on Windows too, but you need to invert the single and double quotes.
Btw, when executing which mysql
in Linux as you told, you’ll not get the installation directory on Linux. You’ll only get the binary path, which is /usr/bin
on Linux, but you see the mysql installation is using multiple folders to store files.
If you need the value of datadir as output, and only that, without column headers etc, but you don’t have a GNU environment (awk|grep|sed …) then use the following command line:
mysql -s -N -uUSER -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'
The command will select the value only from mysql’s internal information_schema
database and disables the tabular output and column headers.
Output on Linux:
/var/lib/mysql
Файлы баз данных в СУБД MySQL хранятся на жёстком диске. По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако это путь можно изменить.
В данной статье будет показано как посмотреть, где хранятся файлы баз данных в СУБД MySQL в операционной системе Ubuntu 20.04.
По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако, чтобы убедиться в этом можно выполнить команду sudo grep -R ‘datadir’ /etc/mysql/ которая отобразит полный путь до файлов, в которых хранятся базы данных:
sudo grep -R 'datadir' /etc/mysql/
Если перейти по предложенному пути — /var/lib/mysql то в директории будут расположены все необходимые файлы c баз данных. Команду для перехода в директорию необходимо выполнять из-под пользователя root иначе будет ошибка Permission denied:
cd /var/lib/mysql
sudo su
cd /var/lib/mysql
ls -l
Теперь вы знаете где находятся базы данных MySQL. Также можно выполнить команду mysqld с параметрами —verbose и —help которая отобразит путь хранения файлов с базами данных. Данная команда аналогична предыдущей команде.
mysqld --verbose --help | grep ^datadir
Если есть необходимость в изменении пути хранения файлов баз данных, то необходимо открыть конфигурационный файл MySQL от имени суперпользователя (root) при помощи любого текстового редактора. В данном примере, как мы узнали выше, конфигурационный файл находится по пути /etc/mysql/mysql.conf.d/mysqld.cnf. Команда для его редактирования будет выглядеть следующим образом:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
В открывшемся файле необходимо найти блок [mysqld] и в нем параметр с именем datadir в котором можно пописать нужный путь, где будут храниться базы данных. После того как путь был задан необходимо сохранить изменения, закрыть текстовый редактор и перезапустить СУБД при помощи команды:
sudo systemctl restart mysql
Выводы
В данной короткой статье было рассмотрено, где хранятся базы данных в СУБД MySQL. Также при желании можно изменить директорию для хранения. Есть ли у вас опты работы с СУБД MySQL? Расскажите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Бывший системный администратор и DevOps инженер. Ныне работаю по направлению DevSecOps. Использую Linux более 5 лет. Помимо Linux интересую языком программирования Python, базами данных и языком SQL а также информационной безопасностью.
I am looking for the data directory of mysql server (5.1.42) I installed on my machine which runs win7.
There is no ‘data’ direcotory in C:Program FilesMySQLMySQL Server 5.1 and also in C:UsersMyAccountAppDataLocal||LocalLow||Roaming
Michal Čihař
9,7296 gold badges49 silver badges87 bronze badges
asked Jan 20, 2010 at 23:26
Different MySQL/Windows versions have different data folder locations. To get your ACTUAL data folder location just execute this SQL:
SHOW VARIABLES WHERE Variable_name LIKE '%dir'
answered Feb 5, 2014 at 5:05
CrisCris
2,79624 silver badges23 bronze badges
1
Must be C:ProgramDataMySQLMySQL Server 5.1data.
Was not really a good idea to place data here by default. It is compatible with various Vista compatibility requirements, but is eather hard to find, especially given the ProgramData folder is hidden.
answered May 10, 2011 at 1:24
0
You can find the data directory at this location
C:ProgramDataMySQLMySQL Server 5.5data<YourDataDirectoryTableName.frm>
answered Jul 9, 2013 at 18:08
NomanNoman
4071 gold badge5 silver badges10 bronze badges
The path can be defined in my.ini
(located in Windows directory) as datadir
.
answered Apr 23, 2010 at 13:46
Michal ČihařMichal Čihař
9,7296 gold badges49 silver badges87 bronze badges
I have had the problem to find the data directory too and even to start the mysql the second time after installing the server 5.7 on Windows 7.
In contrary to some answers here and to the documentation (the part about location of my.ini), the my.ini location was c:ProgramDataMySQLMySQL Server 5.7my.ini the data location was c:ProgramDataMySQLMySQL Server 5.7Data. In fact it was to see, as default proposed data location, during the installation.
answered Jan 7, 2016 at 10:30
MartinMartin
1211 silver badge4 bronze badges
This is what worked for me on Windows 7:
c:ProgramDataMySQLMySql Server 5.7> xcopy data c:MySQL"MySQL Server 5.7"data
After that, run MySQL server with:
c:MySQL"MySQL Server 5.7"bin> mysqld
Thanks to those who shared the information that C:ProgramData
was a hidden directory!
Mogsdad
44.4k21 gold badges150 silver badges272 bronze badges
answered Mar 18, 2016 at 2:48
If you installed mysql with the MSI installer,
look here: C:ProgramDataMySQLMySQL Server 5.7
and you should see the data folder.
Even thought my datadir
is specified to be located in the default mysql server
location, my data is stored in %ProgramData%
.
answered Sep 10, 2017 at 5:49
1
After changing the directory, the root password is reset. So, keep in mind, if you change the directory, and have access issues, try to access it without a password then set a new password.
deadly
1,21814 silver badges24 bronze badges
answered Apr 9, 2012 at 12:43
For newer users: The data directory lies in C:Program FilesMySQLMySQL Server 8.0data
I currently have MySQL Server 8.0. If you too, are searching for some error solutions and couldn’t find the «data» directory for MySQL, here’s a note from the official MySQL:
«The default data directory location is
C:Program FilesMySQLMySQL Server 8.0data
, orC:ProgramDataMysql
on Windows 7 and Windows
Server 2008. TheC:ProgramData
directory is hidden by default. You
need to change your folder options to see the directory and contents.»
Hope this clears some hurdles
answered Jan 21, 2021 at 8:20
Take a look at:
C:UsersAll UsersMySQLMySQL Server 5.1data
answered Jun 28, 2013 at 1:38
0