Что хранится БД сайта и где она лежит?

Saputo аватар
60

Долгое время думал, что в базе MySQL хранится вся текстовая информация сайта. Но несколько раз во время сбоев на сервере замечал, что на сайте перестают отображаться одни блоки, но остаются другие.
Один раз при переносе сайта у базы не правильно сохранилась кодировка. Все статьи в ленте остались нормальными. Кракозябры появились только в боковых модулях - "последнее", "похожее", "комментарии" и т.д. Это значит, что статичные статьи хранятся не в базе, а в отдельных файлах?

Куда складывается база физически на сайте? Почему ее нельзя копировать/скачивать/закачивать напрямую, как файл, а нужно делать все операции через phpMyAdmin?

Понимаю, что вопросов много. Достаточно будет коротких ответов. На уровне действий и операций проблем нет. Все пока получается)))). Хочется чуть чуть понимать "физический смысл" своих действий.

Заранее спасибо!

Robotti аватар
83

Saputo писал(а):
Это значит, что статичные статьи хранятся не в базе, а в отдельных файлах?

Ну что хранится в файлах, а что в БД - это от CMS зависит.

Saputo писал(а):
Куда складывается база физически на сайте? Почему ее нельзя копировать/скачивать/закачивать напрямую, как файл, а нужно делать все операции через phpMyAdmin?

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

Дима аватар
405

Saputo писал(а):
Долгое время думал, что в базе MySQL хранится вся текстовая информация сайта... Один раз при переносе сайта у базы не правильно сохранилась кодировка. Все статьи в ленте остались нормальными. Кракозябры появились только в боковых модулях - "последнее", "похожее", "комментарии" и т.д. Это значит, что статичные статьи хранятся не в базе, а в отдельных файлах?

Причин может быть много. Один из вариантов -- движок кеширует часть блоков в такой форме, что кодировка уже не влияет. Соответственно, если сбросить кеш движка, то всё станет кракозябрами.

Saputo писал(а):
Куда складывается база физически на сайте? Почему ее нельзя копировать/скачивать/закачивать напрямую, как файл, а нужно делать все операции через phpMyAdmin?

При установке MySQL на сервер определяется путь, где хранятся файлы с таблицами. Есть папки по названиям баз данных. А в них файлы по таблицам. На shared-хостинге доступа к файлам СУБД нет. Данные нужно вытягивать через SQL. phpMyAdmin -- один из интерфейсов. SQL-запросы можно задавать из юникс-шелла, из скриптов, через настольные приложения для управления СУБД.

Мас аватар
25

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

Должно лечиться запросом "SET NAMES utf8", к примеру.

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

Saputo аватар
60

Robotti, Дима, Мас, спасибо за ответы!
Особенно за идею по поводу кэширования. Даже не подумал, что может быть еще и этот фактор. Появилось несколько уточняющих вопросов, но лучше создам для них отдельную тему.

Получается, что сайт и база лежат в разных местах. И все, что их связывает (например, в Joomla) - это файл configuration.php? Только через него скрипт сайта может взаимодействовать со своей базой (находить ее)? Если я знаю имя и пасс базы соседа по виртуальному хостингу - мой сайт может "взаимодействовать" с его базой?

Если к CMS-ке приделан дополнительный форум как компонент (например, FireBoard в Joomla) - база форума при установке встраивается в базу самого сайта?

Мас писал(а):
настоятельно рекомендую изучит базу вашего сайта и часть кода системы

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

Есть еще вопрос по поводу работы с базами - пользователь базы. Каждый раз, при создании нового сайта на локалке - в phpMyAdmin создаю новую базу и нового пользователя. Нужно ли это делать или можно использовать (указывать) базу и пользователя от предыдущей сайто-сборки (если она уже не нужна)?
Или если создать новую базу - можно ли в качестве пользователя к ней указать уже существующего (который создавался для предыдущей базы)?
И примерно то же самое про хостинг - если на одном хост-аккаунте можно создать например 3БД (и 3 домена) - то можно ли к 3-м разным БД указать одного и того-же пользователя?
Если да, то стоит ли это делать с точки зрения безопасности?

Мас аватар
25

> Или если создать новую базу - можно ли в качестве пользователя к ней указать уже существующего (который создавался для предыдущей базы)?

Обычно создается 1 пользователь и добавляется, как администратор к нескольким БД.

Можно в 1 БД складывать несколько сайтов. У многих систем/форумов даже есть такая опция - префикс у таблицы. Делаешь форуму префикс forum_, к сайту префикс site_ и сайт с форумом мирно уживаются в одной базе.

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

> И примерно то же самое про хостинг - если на одном хост-аккаунте можно создать например 3БД (и 3 домена) - то можно ли к 3-м разным БД указать одного и того-же пользователя?
> Если да, то стоит ли это делать с точки зрения безопасности?

Если к 3 БД прикрутить 1 пользователя, то следовательно взломав, слив данные конфига с параметрами доступа к БД, злоумышленник может получить доступ и к другим БД.

Другой вопрос как будет взломщик работать с БД, если обычно сервера MySQL закрыты из вне...

> Если к CMS-ке приделан дополнительный форум как компонент (например, FireBoard в Joomla) - база форума при установке встраивается в базу самого сайта?

Скорей всего в одной БД все.

Гость аватар

Я ничего не понимаю!!! Аааа!!! Всех с новым годом!!!!