# Zmiana Prefiksu tabel bazy danych (Tutorial WordPress)

Prefiks tabel bazy danych w WordPress to przedrostek występujący przed główną nazwą danej tabeli. Jego domyślne ustawienie, a właściwie brak zmiany to dość popularny błąd, który dzisiaj postaram się rozwiązać.

Baza danych WordPress zawiera wszystkie informacje wymagane do jej funkcjonowania, a więc całą zawartość tekstową, opcje, klucze licencyjne i ustawienia. Nawet z pozoru niewielka zmiana może być tragiczna w skutkach. Wszystko zależy oczywiście od tego w jaki sposób i do czego atakujący tej bazy danych potrzebuje.

[Zobacz Film VIDEO (Zmiana wtyczką)](https://jaworowi.cz/bezpieczenstwo-wordpress-prefix-db-14122.php#zmiana-prefiksu-bazy-danych-wtyczka)

## **Dlaczego powinieneś zmienić prefiks bazy danych w WordPress?**

Przede wszystkim największym problemem domyślnego prefiksu bazy danych *wp_* jest to, że jest on… domyślny. 

Chodzi mi o to, że każdy wie jaki on jest i w pierwszej kolejności, aby przeprowadzić atak lub wyciągnąć informacje z bazy danych będzie próbował pobierać dane właśnie z tabel *wp_users*, *wp_post*, *wp_options* itd.

### **Przykładowe wykorzystywanie tej luki w zabezpieczeniach**

- Atakujący może dowolnie zmieniać wpisy, w tym je usuwać, ale też (co się często zdarza) dopisywać złośliwy kod,

- Atakujący może dowolnie zmieniać użytkowników – ich uprawnienia, hasła, ustawienia, ale też dodawać własnych o dowolnych uprawnieniach,

- Atakujący uzyska dostęp do ukrytej domyślnie zawartości takiej jak np. wpisy prywatne czy strukturę katalogu mediów, nazwy plików i ich lokalizacje,

- W przypadku sklepów może dowolnie zmieniać zamówienia, zmieniać im statusy, zawartość i inne atrybuty

- Uzyskuje pełen dostęp do danych klientów, adresy email komentujących czy osoby zapisane na newsletter (jeżeli korzystasz z wtyczki),

- Dostęp do kluczy licencyjnych i danych do połączenia z aplikacją zewnętrzną może mu posłużyć do wysyłania spamu, pozbawienia Ciebie licencji na dane rozwiązanie i wiele innych.

Dwa ostatnie punkty zdecydowanie narażą Ciebie na nieprzyjemności związane z rozporządzeniem [RODO](https://jaworowi.cz/s/RODO), gdyż brak zmiany domyślnego ustawienia jest sprzeczny z zapisem wymagającym dołożenia należytej i maksymalnie możliwej staranności w ochronie danych.

*Wystarczy zmienić prefiks bazy danych, aby się uchronić przed takimi niespodziankami. 

## **Bezpieczny prefix w WordPress – czyli jaki?**

Przede wszystkim nieoczywisty tzn. nic co łatwo można zgadnąć jak np. wordpress_*, nie zawierający nazwy domeny i losowy. Zdecydowanie zalecam prefiks dwuczęściowy np. *u89e_d2_* lub jak w dalszych przykładach *sec_prefix_*.

## **Zmiana prefiksu bazy danych: Ręcznie**

Aby zmienić prefiks bazy danych bez użycia wtyczki, należy zalogować się do panelu zarządzania bazą danych np Adminer lub phpMyAdmin i otworzyć bazę danych, w której znajduje się WordPress.

W pierwszym kroku należy zmienić nazwy wszystkich tabel, zamieniając domyślny prefiks na nowy, jednak przy dużej ilości tabel będzie to zadanie czasochłonne, ale i na to znajdzie się rozwiązanie.

Będąc w phpMyAdmin lub Adminer (zrzuty poniżej) kliknij w SQL/Zapytanie SQL o następującej treści zmieniając pierwsze trzy atrybuty wg ustawień serwera:

`SET @database   = "nazwaBazyDanych"; 
SET @old_prefix = "stary_prefix_"; 
SET @new_prefix = "nowy_prefix_";
   SELECT
    concat(
        "RENAME TABLE ",
        TABLE_NAME,
        " TO ",
        replace(TABLE_NAME, @old_prefix, @new_prefix),
        ';'
    ) AS "SQL" FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;`

Zostanie wygenerowana lista wszystkich tabel wraz z listą komend.

*Zapytanie SQL w bazie danych, które wygeneruje komendę do zmiany prefiksu

Skopiuj poniższe komendy i wklej w to samo okno wydawania poleceń SQL.

![Zmiana prefixu bazy danych WordPress (adminer i phpmyadmin)](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.39.39.png)Gotowa komenda dla zmiany prefixu tabel

W efekcie zostaną zmienione wszystkie tabele.

![zapytanie sql do zmiany prefiksu bazy danych wordpress](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.39.56.png)Zapytanie do BD zostało zakończone pomyślnie

W phpMyAdmin wygląda to odrobinę inaczej, nad listą wygenerowanych tabel należy kliknąć „opcje” i wybrać „Pełne teksty” zatwierdzić i wywołać komendę jeszcze raz – w innym przypadku tekst komend będzie ucięty i wywoła błędy.

![Zmiana prefiksu bazy danych w WordPress poprzez phpmyadmin](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-04.13.57.png)

Na końcu pozostała zmiana prefiksu bazy danych w pliku [wp-config.php](https://jaworowi.cz/tag/wp-config-php) (plik zwykle znajduje się w głównym katalogu instalacji) tak jak poniżej:

![zmiana prefiksu bazy danych w pliku wp-config.php](https://jaworowi.cz/wp-content/uploads/2019/11/Zrzut-ekranu-2019-11-4-o-03.40.46.png)Zmiana prefiksu tabel w wp-config.php (zawierającym główne ustawienia WP)

W przypadku braku dokonania tej zmiany WordPress wyświetli informacje o braku możliwości połączenia z bazą danych, gdyż nie znajdzie tabel.

## **Zmiana prefiksu bazy danych: wtyczka**

Istnieje prosta wtyczka do zmieniania prefiksu bazy danych i wymaga jedynie instalacji, aktywacji oraz dokonania zmiany, aby na końcu ją usunąć. Wystarczy skorzystać z wtyczki [WP Prefix Changer](https://wordpress.org/plugins/wp-prefix-changer/)* co prezentuje na poniższym video:

Zmiana prefixu bazy danych w WordPress – Poradnik

Wtyczka ułatwia pracę o tyle, że wszystko wykonuje za nas, ale musimy być ostrożni i z uwagi na to, że baza danych może (choć nie musi) ulec uszkodzeniu koniecznie wykonaj kopię zapasową przed rozpoczęciem jakichkolwiek zadań!

Gdy już wiesz jak zmienić prefiks tabel bazy danych w WordPress podziel się swoją opinią w komentarzu lub udostępnij innym :)
