Centos где лежат базы mysql

Обновлено: 06.07.2024

От автора: а что это вы под ногами ищете? Базу данных? Поверьте, скорее все, она никуда не делась, и лежит «целехонькая» на вашем ПК или сервере! Там уже смотрели? Наверное, вы просто не знаете, где хранятся данные MySQL. Об этом мы вам сегодня и расскажем.

Импорт-экспорт данных в MySQL

Чаще всего найти утерянные базы данных нужно для импорта или копирования. К счастью, для этого не обязательно знать место их «дислокации» на дисковом пространстве. Программные интерфейсы для работы с СУБД MySQL имеют встроенные средства переноса и создания копий БД и таблиц.

В наших «широтах» самой востребованной остается оболочка phpMyAdmin, предназначенная для администрирования системы управления БД MySQL. На примере этого веб-приложения мы и рассмотрим встроенные средства, которые позволят нам остаться в неведении, где находится MySQL.

В phpMyAdmin создание копий баз данных происходит через вкладку «Экспорт». Для дублирования БД или таблицы слева в списке выберете нужный для копирования элемент. После этого перейдите в раздел «Экспорт». В окне параметров в подразделе «Способ экспорта» должно быть установлено значение «Обычный». Затем в списке выделите базу данных (таблицу). После чего нажимаете в самом низу окна «Ок».



Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

В результате программа создаст копию и сохранит ее на клиентской стороне. Вся работа с веб-приложением происходит через браузер, поэтому созданный дубликат БД нужно искать в папке загрузок.

Место хранения оригиналов баз

Знание встроенного функционала phpMyAdmin поможет быстро создать копии нужных данных. Но если на компьютере не установлена ни одна из программных оболочек для администрирования СУБД. А вам нужно перенести БД на другой сервер. Или изменить хранящуюся в таблицах информацию. При этом выполнять запросы придется через консоль, где обязательно прописывается путь к БД. Как видите знать, где хранится база данных MySQL, важно и нужно.

Вот еще один пример «из жизни начинающего админа». Предположим, первоначально вы пользовались Denwer. Но в один «непогожий» день вы нечаянно удалили часть файлов локального сервера. В результате чего он больше не запускается, и вы начинаете «рыть» оставшиеся папки в надежде спасти хотя бы базы данных. Но в этом случает также «удобнее» знать, где копать. Вот пример пути, где в веб-сервере хранятся БД: F:\Webserver\usr\local\mysql-5.5\data, где F – это диск, на котором был установлен Denwer.


Для открытия файлов скопированных БД потребуется phpMyAdmin. Если вы установили сервер СУБД без оболочки, тогда по умолчанию место, где хранятся базы данных MySQL, находится здесь: C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data

Файл 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, где хранятся базы. Надеемся, нам удалось научить вас этому!


Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

Файлы базы MySQL/MariaDB данных хранятся на жёстком диске. По умолчанию это папка data внутри директории исполнимых файлов MySQL (в Windows) или в директории /var/lib/mysql/ (Linux).

В настройках можно указать любое расположение базы данных MySQL — необязательно в папке с установленной программой, это может быть произвольная папка. Более того, на серверах с высокой нагрузкой рекомендуется файлы баз данных выносить на отдельный диск, чтобы не снижалась производительность из-за одновременного доступа к диску для чтения баз данных и для запуска исполнимых файлов.

Иногда непросто разобраться в сложной структуре веб-сервера, иногда нужно в скрипте реализовать возможность определять путь до файлов баз данных — например, в целях настройки автоматического резервного копирования.

Далее будет показано, как в командной строке можно определить, где расположены файлы баз данных MySQL в Windows и в Linux.

Определение пути без подключения к серверу СУБД

В Windows

В ОС Windows для получения пути до базы данных введите команду:


В Linux

В операционной системе Linux выполните следующую команду и она покажет вам путь до базы данных:


Переменная @@datadir;

Этот способ работает на всех системах одинаково. Нужно выполнить подключение к системе управления базой данных. Например, для пользователя root это делается так:

И затем в консоли MySQL/MariaDB выполните:


Как видно на скриншоте, путь до файлов базы данных на сервере, где введена команда, c:\Server\data\DB\data\.

Ещё один вариант выполнения данной команды:

Как узнать настройки директорий в MySQL/MariaDB

Чтобы показать информацию о всех настройках директорий СУБД сервера, выполнит команду:

Пример вывода в Windows для MariaDB:


Чтобы вывести только datadir выполните команду:

Как узнать путь до базы данных MySQL/MariaDB в скрипте

Если вы используете полученное значение пути до папки баз данных, например, в скрипте, то есть вам нужно только значение без лишних символов псевдографики, которая имитирует таблицу, то примените следующую команду:

Примечание: если в Linux у вас проблемы с последними командами, то инвертируйте (поменяйте местами) одинарные и двойные кавычки.

Также не забывайте менять пользователя root на имя вашего пользователя.

(искал как по имени каталога = имя базы, так и по имени файла.* = имя таблицы).

Потом обнаружил что таблица по умолчанию создалась как InnoDB. Поскольку я всегда работаю с MyISAM - захотел сменить тип и получаю

Собственно решить надо 2 задачи:
1. сменить тип на MyISAM и поставить его по умолчанию
2. методом копирования файлов tablename.* перенести парочку таблиц с другого сервера (там такие таблицы что экспорт-импорт в .sql напрягает по времени) - делаю так уже раз 4й.

P.S. вообще парадокс, mysql не может записать в /var/lib/mysql, а именно создать там каталог
права стоят rwx-rw----- владелец mysql:root, пользователь под которым запущен сервер mysql - по идее права должны быть

Last edited by Messiah on Sun Apr 06, 2014 9:14 pm, edited 1 time in total. imperio VestaCP Team Posts: 6916 Joined: Sat Dec 01, 2012 12:37 pm Contact:

Post by imperio » Sun Apr 06, 2014 9:12 pm

Потом обнаружил что таблица по умолчанию создалась как InnoDB какой тип таблиц использовать - выбирает ваш скрипт. пытаюсь найти где хранятся сами файлы
методом копирования файлов tablename.* перенести парочку таблиц с другого сервера /var/lib/mysql
должны быть папки с названием базы. Таблицы хранятся в файлах со специальным расширением. Нельзя их переносить, или импортировать. там такие таблицы что экспорт-импорт в .sql напрягает по времени другого выхода нет. Используйте формат gzip и увеличьте лимиты на импорт в php.ini
Или используйте программу Sypex Dumper imperio VestaCP Team Posts: 6916 Joined: Sat Dec 01, 2012 12:37 pm Contact:

Post by imperio » Sun Apr 06, 2014 9:15 pm

вообще парадокс, mysql не может записать в /var/lib/mysql, а именно создать там каталог Messiah Posts: 72 Joined: Sun Apr 06, 2014 8:47 pm

Post by Messiah » Sun Apr 06, 2014 9:22 pm

Спасибо за оперативный ответ. Стал дописывать в тот же пост, потом заметил ответ

Mysql сервер не может получить доступ к /var/lib/mysql, хотя права вроде правильные.
и Alter, и CREATE вручную с указанием типа попадают на те же грабли.
OS: Debian 7.0

По поводу копипаста - я уже несколько переносов разных БД так делал - корпируется весь каталог равный названию базы, в нем каждой таблице соотв. несколько файлов с разными расширениями, на новой системе запускается оптимизация таблиц и все работает. Но сейчас до этого дело еще не дошло - хочу чтобы панель для начала работала, а потом уже докину оставшиеся несколько таблиц руками.

И далее по Phpmyadmin. Импорт - пишет макс. файл 2МБ. Верю. Выбираю файл 1Мб с небольшим - летит

Объём базы данных увеличивается, и со временем она исчерпывает пространство файловой системы. Кроме того, если ввод и вывод находится на одном разделе с остальной частью операционной системы, возможные конфликты доступа к устройствам ввода/вывода. RAID, сетевые блочные хранилища и другие устройства предоставляют избыточность данных и другие полезные функции. Если вы хотите добавить больше места и оптимизировать производительность, а также воспользоваться другими функциями хранения, это руководство поможет вам переместить каталог данных MySQL.

Требования

  • Сервер CentOS 7 (рекомендации по настройке сервера можно найти здесь).
  • Пользователь с доступом к sudo.
  • Предварительно установленный сервер MySQL (инструкции можно найти здесь).

В данном руководстве показано, как переместить данные в блочное хранилище, смонтированное в /mnt/volume-nyc1-01. Это поможет вам переместить каталог данных в новое место независимо от того, какое хранилище вы используете.

1: Перемещение каталога данных MySQL

Чтобы подготовиться к перемещению каталога данных MySQL, нужно уточнить его текущее местонахождение. Для этого откройте интерактивную сессию MySQL и укажите учётные данные администратора.

В командной строке MySQL запросите каталог данных:

Этот вывод подтверждает, что в данном случае MySQL использует каталог данных по умолчанию, /var/lib/mysql/. Этот каталог и нужно переместить. Чтобы закрыть командную строку MySQL, введите:

Чтобы обеспечить целостность данных, отключите MySQL, прежде чем вносить изменения в каталог данных:

sudo systemctl stop mysqld

Утилита systemctl не отображает результаты команд управления сервисами. Чтобы убедиться в том, что сервер MySQL отключен, используйте следующую команду:

sudo systemctl status mysqld

Последняя строка вывода должна сообщать:

. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Теперь, когда сервер MySQL не работает, скопируйте текущий каталог данных в новое место с помощью rsync. Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод.

Примечание: Убедитесь, что в названии каталога нет конечной косой черты (который система может добавить, если вы используете автодополнение). Если такой слеш есть, rsync будет сбрасывать содержимое каталога в точку монтирования, а не в каталог.

sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

После выполнения rsync переименуйте текущую папку, добавив расширение .bak. Оставьте расширение до тех пор, пока не убедитесь, что данные перемещены успешно. Это поможет не спутать файлы.

sudo mv /var/lib/mysql /var/lib/mysql.bak

2: Настройка нового каталога данных

MySQL предлагает несколько способов отмены значений конфигурации. По умолчанию каталог datadir настраивается в файле /etc/mysql/mysql.conf.d/mysqld.cnf. Откройте этот файл:

sudo vi /etc/my.cnf

Найдите строку datadir= и укажите в ней путь к новому каталогу данных. Также нужно указать путь к сокету. В данном случае настройки будут выглядеть так:

[mysqld] . . .
datadir=/mnt/volume-nyc1-01/mysql
socket=/mnt/volume-nyc1-01/mysql/mysql.sock
. . .

После этого нужно добавить настройки клиента mysql. Вставьте в конец файла следующие строки:

[client] port=3306
socket=/mnt/volume-nyc1-01/mysql/mysql.sock

Нажмите Escape и :wq!, чтобы закрыть и сохранить файл.

3: Запуск MySQL

Теперь нужно запустить MySQL и проверить, работают ли новые настройки:

sudo systemctl start mysqld
sudo systemctl status mysqld

Чтобы убедиться, что новый каталог данных работает, запустите командную строку MySQL:

Снова запросите каталог данных:

Теперь нужно убедиться в том, что база данных полностью функциональна. После проверки целостности данных вы можете удалить резервную копию каталога данных:

sudo rm -Rf /var/lib/mysql.bak

Заключение

Теперь вы умеете перемещать каталог данных MySQL. В данном руководстве использовалось блочное хранилище, однако эти инструкции подходят для настройки любого устройства независимо от технологии, на которой оно основано.

basedatos4

Расположение файлов БД определяется директивой datadir в файле конфигурации MySQL (/etc/my.cnf или /etc/mysql/my.cnf). Обычно базы хранятся в /var/lib/mysql.

Посмотреть список существующих пользователей в базе MYSQL

Создание базы данных и задание кодировки

Раздача прав на базу

Раздача полных прав на базу cуществующему пользователю:

все права на базу данных пользователю, который еще не существует в MySQL

1 mysql> GRANT ALL PRIVILEGES ON `<база данных>`.* TO `<имя создаваемого пользователя>`@`%` IDENTIFIED BY `<пароль создаваемого пользователя>` WITH GRANT OPTION ;

SHOW

SHOW DATABASES - просмотреть какие есть базы в MySQL сервере
SHOW TABLES - показать таблицы Бд
SHOW FIELDS(COLUMNS) - показать информацию о том какие поля есть в таблице,
каких они типов, пример: show fields from cars ;

SHOW KEYS from table_name - отобразить ключи таблицы
SHOW PROCESSLIST; - показать процессы сервера MySQL.

SELECT * from people;
выведет всё(все поля) что есть в таблице people;

Проверить права пользователя

Создание пользователей и назначение им прав

GRANT - Создание пользователей и назначение прав

GRANT ALL PRIVILEGES ON `web_base`.* TO 'web'@'localhost' WITH GRANT OPTION ;

ВЫБОРКА ИЗ БАЗЫ

LIMIT - используеться для вывода определенной группы(кол-ва) данных
синтаксис:

a - число , с какой позиции выдавать данные
b - кол-во выводимых строк

IN - позволяет задавать несколько значений в поиск
синтаксис:

DML(Data Manipulation Language) - управление данными(УД)
SELECT - используеться для того чтобы делать выборки из БД
синтаксис:

column_names - если необходимо выбрать несколько полей,
они должны указываться через запятую, например

* - всё
SELECT * from people;
выведет всё(все поля) что есть в таблице people;

Иногда в таблице, некоторые из колонок могут содержать повторяющиеся значения.
Это не проблема, т.к. всегда можно сделать выборку лишь тех значений
который разняться между собой(не дублируються). Ключевое слово DISTINCT может быть использовано для этих целей.
синтаксис:

WHERE - используется для получения только тех записей,
которые соответствуют определенному критерию.
синтаксис:

Здесь также могут использоваться операторы:
= равно
<> не равно
> больше
< меньше
>= больше либо равно
<= меньше либо равно
.
здесь еще много чего может быть. см. оффиц сайт либо любую книгу по MySQL
Операторы AND & OR
Оператор AND отображает данные если выполняются оба условия.
Оператор OR отображает данные если выполняеться хотябы одно условие.

Смешивание AND & OR

ORDER BY - оператор сортировки, используется для сортировки результатов,
установленных указанной колонки.ORDER BY по умолчанию сортирует
записи в возрастающем порядке.(ASC)
Если вы хотите сортировать записи в (обратном)порядке убывания,
вы можете использовать ключевое слово DESC.
синтаксис:

в обратном порядке

LIMIT - используеться для вывода определенной группы(кол-ва) данных
синтаксис:

a - число , с какой позиции выдавать данные
b - кол-во выводимых строк
примечание: также можно задавать 1 цифру, не две.

LIKE - этот оператор используеться для поиска данных в полях по шаблону.
синтаксис:

IN - позволяет задавать несколько значений в поиск
синтаксис:

BETWEEN - оператор с помощью которого можно вывести диапазон данных
который ограниченный двумя значениями полей.
синтаксис:

Для того чтобы двигаться дальше создадим еще одну табличку.
Еще одна таблица cars в тойже БД mytest

JOIN - используется для запроса(вывода) данных из двух или более таблиц.

. вывод убрал, т.к. не очень красиво он тут "вписываеться"
UNION - оператор сочетает вывод двух и более SELECT операторов.
примечание: каждый запрос SELECT в сочетании с UNION должны иметь одинаковое
число столбцов. Колонки также должны иметь аналогичные типы данных.
синтаксис:

UPDATE - используется для обновления существующих записей в таблице.
синтаксис:

работать с данной конструкцией надо внимательно т.к. например если указать обновление
значений полей без "доп фильтра" можно затереть данные которые вам на самом деле нет
нужды трогать.
Например:

приведет таблицу к такому виду

т.е. если необходимо обновить только поле где /> то нужно писать так:

т.к. здесь присутствует WHERE соответсвенно можно комбинировать с AND & OR.
DELETE - удаление записей
синтаксис:

INSERT - вставка(заполнение) данных в полях таблицы
синтаксис:

columnN - названия полей в таблице table_name
valueN - значения полей, т.е. содержимое, те данные которые будут в поле
пример показан выше, где заполняеться таблица cars

ПРИМЕР:

Добавим еще одну запись. в таблицу.

пример таблицы ниже.

mysql> select * from cars;

Добавляемые значения должны соответствовать тому порядку, в котором поля перечислены в операторе CREATE. Если вы хотите добавлять информацию в другом порядке, то вы должны указать этот порядок в операторе INSERT, например:

INSERT INTO CLIENTS (FIO, ADDRESS, C_NO, PHONE, CITY)
VALUES ('Петров', 'Мира 29', 2, '-', 'Екатеринбург');

С помощью INSERT мы можем добавлять данные и в определенные поля, например, C_NO и FIO :

INSERT INTO CLIENTS (C_NO, FIO)
VALUES (1, 'Иванов');

CREATE


create database mytest; - создание базы данных с именем mytest

CREATE TABLE - для создания таблиц в БД
синтаксис:

где table_name - имя таблицы, column_name1 - имя столбца,
data_type - тип данных для этого солбца;
Какие типы данных могут быть в MySQL описано в разделе "Типы данных"
пример создания таблицы cars:

ALTER TABLE

беспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип.

Пример:

alter table cars change GosNumber GSNumber INTEGER; \\ поменять столбец GosNumber на GSNumber в таблице cars

alter table cars add test timestamp; добавить столбец test с типом timestamp

alter table cars drop column test; Удалить столбец.

Если необходимо, чтобы столбец встал в начало таблицы,
нужно после параметров вставляемого столбца написать ключевое слово FIRST:

Если необходимо , чтобы столбец был вставлен не в начале таблицы,
и не в конце, а после определенного столбца, то нужно применить
ключевое слово AFTER 'имя столбца', после которого будет установлен
новый столбец:

пример:

alter table cars add country varchar(255) after GSNumber;

вставить колонку country после колонки GSNumber

Если нужно дописать к таблице не один, а несколько столбцов,
то для каждого столбца нужно ADD column_name datatype записать через запятую:

REATE INDEX
Индекс может быть создан для таблицы,это даст возможность
более быстро и эффективно работать . Пользователю индекс не
виден, он просто используется для ускорения поисков / запросов.
Примечание: Обновление таблицы с индексами занимает больше времени,
чем обновление таблицы без (поскольку индексы также нуждаются в обновлении).
Таким образом, индексы стоит создавать только на столбцы (таблицы),
по которым будет часто производиться поиск и запросы.
синтаксис:

UPDATE

UPDATE Имя_таблицы
SET Поле1 = Значение1, . , ПолеN = ЗначениеN
[WHERE Условие];

ПРИМЕР:

обновить в таблицу cars задать значение в столбце с именем country значение ufa изменять в строке с C_id равным 1 (единице)

поменяем на город Ufa везде где стоит модель VAZ

примечание

если строчные символы заключаем их в одинарные ковычки.

Читайте также: