Путь до базы MySQL / MariaDB

Обновлено: 20.07.2020 Опубликовано: 12.07.2018
Тематические термины: MySQL, MariaDB, Linux. В статье пойдет речь о просмотре и смене пути расположения файлов баз данных MySQL. Приведенные примеры выполнены на CentOS 7 — также они будут работать на Ubuntu и многих других дистрибутивах Linux, FreeBSD и Windows.
Посмотреть текущий путь
Увидеть, где хранятся базы можно несколькими способами. Способ 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;
Пример ответа:

Способ 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
- /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
Где в Linux находятся базы MySQL
Чаще всего базы данных MySQL на Linux хосте находятся в директории /var/lib/mysql.
Но перед тем, как резервировать эту папку, нужно все же быть уверенным, что именно тут находятся актуальные файлы базы данных. Как это проверить?
1) Самое простое и не самое точное: смотрим дату обновлений файлов в папке /var/lib/mysql. Если даты свежие, значит весьма вероятно, база данных лежит тут.
2) файл конфигурации «my.cnf»
MySQL (MariaDB) хранят настройки в файлах с расширением .cnf. По-умолчанию — файл my.cnf.
Скорее всего, это файл находится в /etc/my.cnf.
Лучше не гадать, а найти файлы my.cnf на хосте:
# find / -type f -name my.cnf
/etc/my.cnf
У меня в этом файле была единственная ссылка на директорию /etc/my.cnf.d, в которой были файлы:
auth_gssapi.cnf
client.cnf
enable_encryption.preset
mariadb-server.cnf
mysql-clients.cnf
В файле /etc/my.cnf.d/mariadb-server.cnf:
смотрим секцию mysqld:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
Директория с базой данных: /var/lib/mysql
3) как еще можно искать конфиг базы mysql?
# mysql —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf
# mysqladmin —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf
Зная файл конфига, вы легко найдете расположение базы данных.
4) изврат, но почему бы и да?
Используя команду lsof, можно посмотреть, какие файлы задействованы базой данных:
# lsof -u mysql
.
mysqld 1084 mysql 17r DIR 253,0 4096 394860 /var/lib/mysql
mysqld 1084 mysql 18uW REG 253,0 114688 657855 /var/lib/mysql/postfix/domain_admins.ibd
mysqld 1084 mysql 19uW REG 253,0 98304 657859 /var/lib/mysql/postfix/vacation_notification.ibd
mysqld 1084 mysql 20uW REG 253,0 131072 657863 /var/lib/mysql/postfix/alias_domain.ibd
mysqld 1084 mysql 21uW REG 253,0 98304 657866 /var/lib/mysql/postfix/domain.ibd
mysqld 1084 mysql 22uW REG 253,0 114688 657856 /var/lib/mysql/postfix/mailbox.ibd
Сразу несколько файлов задействованы в директории /var/lib/mysql.
lsof вообще команда крайне полезная.
Авторизуйтесь для добавления комментариев!

Почтовый сервер Mikrotik VPN 3proxy Шифрование Squid Резервное копирование Защита почты Виртуальные машины Настройка сервера java kvm Групповые политики SELinux OpenVPN IPFW WDS Lightsquid Samba firewalld systemd Mobile libvirt Remote desktop WiFi Iptables NAT Postfix Dovecot Удаление данных Софт Безопасность Winbox User agent Хостинг Передача данных Онлайн сервисы Privacy LetsEncrypt VPN сервер Настройка прокси RRDTool sendmail Rsync Linux SSH Система Windows Синхронизация Облако fail2ban FreeBSD
Как узнать путь до файлов базы данных 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%)
- Как в MySQL результаты запроса сохранить в новую таблицу (RANDOM — 57.5%)
Базы данных MySQL
MySQL — это свободная реляционная система управления базами данных. База данных (БД) — это место, в котором хранятся данные. Слово «реляционный» означает, что данные хранятся в наборах данных, в виде таблиц.
В разделе MySQL вы можете создавать и удалять БД, настраивать доступ к ним, следить за их статистикой по нагрузке и объёму данных.

Управление базами данных осуществляется через таблицу. Для баз данных доступны следующие возможности:
Перейти в phphMyAdmin;
Посмотреть статистику по базе.
Добавить доступ к БД;
Изменить комментарий;
Удалить базу данных;
В таблице под каждой БД указаны доступы для подключения:


По умолчанию у всех БД настроен доступ localhost. Остальные доступы добавляются кнопкой . При добавлении доступа вам будет выведено окно:

В открывшемся окне вы можете:
- Указать IP-адрес или доменное имя компьютера, с которого будет производиться подключение к БД;
- Создать уникальные пароли для отдельных адресов или единый пароль для всех сразу;
- Указать в качестве доступа localhost, если вы удаляли его ранее.
Если необходимо создать доступ к базе данных со всех адресов, то при создании доступа установите флажок в поле «Единый доступ для различных IP-адресов».
Обратите внимание!
Для внешних подключений необходимо использовать имя хоста, которое указано в разделе «Параметры подключения».
Возле
расположена кнопка
— посмотреть статистику по базе. При её нажатии можно посмотреть информацию о нагрузке на базу данных, а также динамику изменения размера.

Создание базы данных
База данных MySQL создается в несколько кликов:

- Придумайте имя БД и впишите его в поле Имя базы. По умолчанию в поле уже вписан ваш логин в системе, вам остаётся лишь дописать латиницей после «_» придуманное название;
- Придумайте надежный пароль для входа в БД или воспользуйтесь генератором случайных паролей ;
- Нажмите кнопку Добавить.

Обратите внимание на чекбокс Сохранить пароль для phpMyAdmin. Если галочка установлена, то при подключении phpMyAdmin к БД пароль будет введён автоматически, а если при создании БД чекбокс был не активен, то при подключении phpMyAdmin к БД пароль нужно будет вводить вручную.


Если при создании БД вы не поставили галочку Сохранить пароль для phpMyAdmin и забыли его, то в дальнейшем вы можете изменить пароль в таблице управления БД.


Ненужные соединения можно удалить кнопкой .
Подключение к базе данных
Для внешнего подключения к БД введите следующую команду:
mysql -h сервер для внешних подключений -u имя пользователя -p
Пример: mysql -h pseudofb.beget.tech -u pseudofb_myadm_b -p
Сервер для внешних подключений и имя пользователя указаны в левой части раздела MySQL.

После подключения к серверу MySQL вы можете работать с БД.
Для внутреннего подключения к БД вам необходимо подключиться по SSH к серверу:
ssh ваш логин@сервер для внешних подключений
Пример: ssh pseudofb@pseudofb.beget.tech
После установки SSH соединения можно подключиться к MySQL:
mysql -h localhost -u имя пользователя -p
Для подключения CMS к БД в большинстве случаев необходимо указать следующие параметры в настройках CMS (конфигурационных файлах):
host = «localhost» dbname= «логин в системе_указанное имя базы» dbuser= «логин в системе_указанное имя базы» dbpasswd = «пароль указанный при создании»
Где посмотреть конфигурационные файлы CMS?
В блоке Полезная информация (левая сторона раздела MySQL) можно посмотреть расположение конфигурационных файлов популярных CMS, в которых редактируются данные настройки.


Если CMS будет подключаться с другого хоста, тогда в параметре host нужно указать имя вашего сервера, например:
host = begetguide.beget.tech
Посмотреть имя вашего сервера можно на главной странице Панели управления в блоке Техническая информация, а также в разделе MySQL в блоке Параметры для подключения.


В разделе MySQL мы собрали удобные инструменты для работы с БД и полезную информацию, которая поможет вам при подключении CMS к MySQL.
Здесь вы найдете инструменты для решения наиболее частых задач при работе с БД: создание, удаление баз данных и подключений к ним, мониторинг нагрузки и размера баз данных, настройка автоматизированного входа в БД для phpMyAdmin.

Также в разделе есть параметры для подключения к БД и полезная информация о настройки подключения CMS к MySQL.