Аккуратная замена префикса таблиц базы данных WordPress

Здравствуйте, уважаемые читатели и посетители блога 4remind.ru. Многие знают, что нередко случаются взломы блогов и сайтов на движке WordPress. Одна из причин происходящего кроется в массовом применении начинающими вебмастерами настроек блога WordPress по умолчанию, например использование одного и того же префикса таблиц базы данных WordPress. В этой статье речь пойдет о методе замены всем известного префикса «wp_» на более надежный, который труднее будет угадать и подобрать злоумышленникам.

Замена префикса таблиц базы данных WordPress


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

Итак, друзья, приступим к аккуратной замене префикса таблиц базы данных WordPress.

Этап №1 — Бэкап базы данных

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

Идем дальше... Предположим, что мы собираемся заменить установленный по умолчанию префикс таблиц «wp_» на новый, более надежный, поэтому далее в тексте будут использоваться следующие условные обозначения:

«wp_» — старый префикс таблиц базы данных WordPress;
«NEWPREF_» — новый префикс таблиц базы данных WordPress;

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

Этап №2 — Создание таблиц базы данных с новым префиксом

Приступим к процедуре замены префикса таблиц базы данных используя phpMyAdmin.

Начнем создавать новые таблицы. Заодно в новые таблицы сразу будут копироваться данные из старых (текущих) таблиц. Блог в это время будет работать, как и работал, так как мы пока не вмешиваемся в таблицы, используемые блогом на данный момент.

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

RENAME TABLE OLDPREFIX_table TO NEWPREFIX_table

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

Создаем список SQL-запросов, в которых должны быть перечислены практически все таблицы, которые используются в базе данных вашего блога, включая таблицы, созданные плагинами (если таковые конечно имеются). В этом списке после слова «TABLE» вставляются имена таблиц с новым префиксом, а после слова «FROM» вставляются имена таблиц со старым префиксом.


CREATE TABLE NEWPREF_blc_filters SELECT * FROM wp_blc_filters;
CREATE TABLE NEWPREF_blc_instances SELECT * FROM wp_blc_instances;
CREATE TABLE NEWPREF_blc_links SELECT * FROM wp_blc_links;
CREATE TABLE NEWPREF_blc_synch SELECT * FROM wp_blc_synch;
CREATE TABLE NEWPREF_commentmeta SELECT * FROM wp_commentmeta;
CREATE TABLE NEWPREF_comments SELECT * FROM wp_comments;
CREATE TABLE NEWPREF_links SELECT * FROM wp_links;
CREATE TABLE NEWPREF_options SELECT * FROM wp_options;
CREATE TABLE NEWPREF_postmeta SELECT * FROM wp_postmeta;
CREATE TABLE NEWPREF_posts SELECT * FROM wp_posts;
CREATE TABLE NEWPREF_terms SELECT * FROM wp_terms;
CREATE TABLE NEWPREF_term_relationships SELECT * FROM wp_term_relationships;
CREATE TABLE NEWPREF_term_taxonomy SELECT * FROM wp_term_taxonomy;
CREATE TABLE NEWPREF_usermeta SELECT * FROM wp_usermeta;
CREATE TABLE NEWPREF_users SELECT * FROM wp_users;

Теперь заходим в phpMyAdmin, снова выбираем нужную нам базу данных и переходим на закладку «SQL». Вставляем в поле для выполнения SQL-запросов приготовленный нами список запросов и выполняем их.
Можно в принципе запросы выполнять и по одному, по очереди, если есть желание.
После выполнения запросов вы получите примерно такой отчет:

Создание таблиц с новым префиксом


Этап №3 — Замена упоминаний префикса в записях таблиц

Идем дальше. Теперь нам обязательно нужно в некоторых полях из двух новых созданных таблиц заменить упоминание старого префикса на новый. Это таблицы «NEWPREF_options» и «NEWPREF_usermeta».

В таблице с новым префиксом «NEWPREF_options» в поле «option_name>» понадобится заменить значение

«wp_user_roles» на «NEWPREF_user_roles»

В таблице с новым префиксом «NEWPREF_usermeta» нужно заменить все значения поля «meta_key», у которых в начале есть старый префикс.
Это могут быть следующие значения:

  • wp_user_level
  • wp_user-settings-time
  • wp_user-settings
  • wp_capabilities
  • wp_dashboard_quick_press_last_post_id
  • wp_autosave_draft_ids
  • wp_metaboxorder_post
  • wp_usersettings
  • wp_usersettingstime

Конечно не все из выше перечисленных значений могут быть у вас в таблице «NEWPREF_usermeta». Все зависит от конфигурации и версии движка вашего блога.
Но мы все же для подстраховки проверим и заменим все найденные значения, это не помешает.

Для замены вышеупомянутых значений на новые в phpMyAdmin снова выбираем нужную нам базу данных и переходим на закладку «SQL».
Вводим там и выполняем следующие команды:

UPDATE NEWPREF_options SET option_name = 'NEWPREF_user_roles' WHERE option_name = 'wp_user_roles';

UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_user_level' WHERE meta_key = 'wp_user_level';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_user-settings-time' WHERE meta_key = 'wp_user-settings-time';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_user-settings' WHERE meta_key = 'wp_user-settings';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_dashboard_quick_press_last_post_id' WHERE meta_key = 'wp_dashboard_quick_press_last_post_id';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_autosave_draft_ids' WHERE meta_key = 'wp_autosave_draft_ids';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_metaboxorder_post' WHERE meta_key = 'wp_metaboxorder_post';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_usersettings' WHERE meta_key = 'wp_usersettings';
UPDATE NEWPREF_usermeta SET meta_key = 'NEWPREF_usersettingstime' WHERE meta_key = 'wp_usersettingstime';

После выполнения запросов вы получите примерно такой отчет:

После выполнения запросов для замены префикса в полях таблиц


Этап №4 — Замена префикса в файле wp-config.php

Теперь, когда в таблицах базы данных WordPress все замены произведены, заходим в файл wp-config.php, который находится в корневом каталоге блога, находим там строку

$table_prefix = 'wp_';

и заменяем в ней префикс на новый

$table_prefix = 'NEWPREF_';

Этап №5 — Проверка блога после замены префикса

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

Этап №6 — Проверка блога после удаления старых таблиц

Если на Этапе №5 все было в порядке, то снова заходим в phpMyAdmin, выбираем нужную нам базу и теперь уже можно удалить все таблицы со старым префиксом.

Напоследок еще раз для подстраховки выполняем проверку, как на Этапе №5. И если обнаружится какая-то проблема, то придется восстановить из бэкапа таблицы со старым префиксом и вернуть на место прежнее значение префикса в конфигурационном файле wp-config.php ( строка $table_prefix = 'wp_'; ), который находится в корневом каталоге блога.

Удачной Вам замены префиксов таблиц базы данных WordPress.

Метки: , , ,
Другие статьи похожей тематики:

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

4 комментария к “Аккуратная замена префикса таблиц базы данных WordPress”

  1. Alex:

    А не проще будет открыть файл базы данных в AkelPad и заменить wp_ на NEWPREF_ ?

    Ответить
    • Можно и так конечно, для тех, кто знает что делает.
      Но мне уже приходилось помогать реанимировать БД, отредактированные в стандартном Notepad.exe и потом импортированные обратно. Основная ошибка у многих новичков в том, что они не обращают внимание на кодировку символов, которая выставлена в настройках БД, к примеру сохраняют в ANSI и заливают в БД, которая настроена под UTF-8, а потом у них либо что-то не работает, либо нечитаемые тексты на выходе.

      Ответить
  2. Серёга:

    Огромное спасибо! ))) Я сразу поставил в AkelPad кодировку по умолчанию -UTF-8

    Ответить
  3. Kef:

    спасибо за статью,
    после самостоятельной смены префикса возникли проблемы — было не войти в админку. сделал по вашей инструкции — работает.

    Ответить

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

Подписаться на обновления блога 4remind.ru по RSS