Cambiando el prefijo de las tablas en la base de datos de Wordpress


Renombrando 'table_prefix' en un Wordpress ya instalado

Es una interesante medida de seguridad, una de las varias que se suelen aconsejar para reforzar tu blog o web soportada en Wordpress: cambiar o renombrar el prefijo de las diversas tablas que componen la Base de Datos -que en adelante llamaré B.D.- de un blog Wordpress YA INSTALADO. He dicho 'renombrar', por tanto esas tablas ya están previamente nombradas.

Por defecto esas tablas aparecen con el prefijo 'wp_nombredetabla'. De lo que aquí se trata es de convertirlas a 'tunuevoprefijo_nombredetabla'.

Para verlas debes ingresar en el Panel de Control de tu servidor o alojamiento web, clicar en phpMyAdmin y finalmente en el nombre de tu B.D. Por defecto las tablas que ha creado Wordpress son siempre las siguientes ONCE:

wp_commentmeta
wp_comments

wp_links
wp_options
wp_postmeta
wp_posts
wp_terms
wp_term_relationships
wp_term_taxonomy
wp_usermeta
wp_users


Si observases que existen otras además de éstas, puede deberse a la instalación de algun 'plugin' -aunque eso no es 'políticamente' correcto por parte de su creador-, pero también a que tu sitio ha sido 'hackeado'. Si sospechas esto último, deja de lado este tutorial y resuelve primero el problema del 'hackeo', comunicándote inmediatamente con quienes manejan tu alojamiento o servidor.

¿Para qué renombrar el prefijo 'wp_' de esas tablas?


Por seguridad, como seguramente ya comprendes -y por eso quizás has llegado a este artículo-. Con el tiempo y el uso te vas dando cuenta de que el asunto de la seguridad es algo importantísimo en un blog auto-alojado con WP.

Tu sitio basado en WP puede ser atacado de varias formas, una de ellas es ejecutando ciertos 'scripts' diseñados para aprovecharse de cualquier vulnerabilidad en tu B.D., denominados como del tipo 'SQL Injection'. Muchos de esos 'scripts' presuponen que las tablas llevan el prefijo por defecto. Renombrarlas es una medida más de otras que es aconsejable tomar, como usar una contraseña fuerte o cambiar el usuario por defecto de 'admin' a otro nombre, por citar sólo las básicas que TÚ puedes aplicar. Generalmente, sin embargo, las más eficaces serán siempre las que habrán aplicado los administradores del servidor o alojamiento donde se halla tu blog, que es de esperar tendrán un buen criterio en esto.

Cambiar el prefijo de las tablas WP. Pasos a seguir


Existen 'plugins' para Wordpress que afirman realizar todo o casi todo el siguiente proceso relacionado con el cambio de prefijo. En mi opinión y experiencia esto es demasiado delicado como para confiarlo a un 'plugin', de modo que te aconsejo NO usarlos, sino realizar tú mismo el cambio directamente en la B.D. Créeme, te ahorrarás más de un potencial susto y horas perdidas investigando qué ha ido mal. Por tanto...

0) Es el punto 'cero' porque es básico, imprescindible, insoslayable: HAZ UNA COPIA O RESPALDO de tu Base de Datos antes de acometer los siguientes pasos. Aquí no voy a explicarte cómo hacerlo. Si tienes un blog WP auto-alojado, asumo que ya conoces algún procedimiento efectivo. Si algo no acaba de funcionar tras aplicar los siguientes pasos y no lo puedes resolver, simplemente importas esa copia de nuevo a tu B.D.

1) Localiza y edita tu archivo wp-config.php, que suele estar en el directorio raíz de tu instalación WP. (Por cierto, otra importante medida de seguridad es sacarlo de ahí y ponerlo justo un directorio antes, se trata de una carpeta que, en un servidor compartido, generalmente llevará tu nombre de usuario. Wordpress ya contempla que lo coloques ahí).

2) Dentro del archivo wp-config.php, más o menos hacia la mitad del mismo, busca la siguiente línea:

$table_prefix  = 'wp_';

3) Y cambias la parte 'wp_' -aquí sin las comillas- por el nuevo prefijo que hayas decidido usar. Voy a usar de ejemplo el siguiente (¡no lo uses, crea el tuyo propio!):

flin53olf10_

En este ejemplo la línea dentro del archivo wp-config.php quedará por tanto así:

$table_prefix  = 'flin53olf10_';

Recuerda: cámbialo por el tuyo propio. Guardas lo editado y vuelves a subir el archivo al servidor si hace falta o si lo estabas editando en tu ordenador.

4) IMPORTANTE -1: cuando crees tu propio prefijo, te aconsejo usar aleatoriamente sólo números y letras en minúscula y, naturalmente, el guión bajo al final del prefijo. No uses NUNCA ninguna letra en mayúscula, es una cuestión ahora mismo muy técnica, pero te aseguro que a más de uno nos ha provocado problemas incomprensibles de muy difícil resolución, especialmente cuando importas la B.D. del blog 'en vivo' a la versión de desarrollo que quizás tengas instalada en tu ordenador -cosa aconsejable, por otro lado-.

5) Repito: no uses el prefijo que vengo usando como ejemplo en este tutorial. Crea el tuyo propio.

6) En este mismo momento tu blog o sitio web dejará de responder a cualquiera que acceda públicamente a él. Tranquilo/a: los siguientes pasos lo devolverán 'a la vida', pero si tiene mucho tráfico quizás te interese ponerlo en 'modo mantenimiento'. Hay por ahí tutoriales que explican cómo hacerlo, pero si no lo has contemplado y ahora mismo te urge, ahí va una solución:

Edita de nuevo el archivo wp-config.php. Arriba de todo, justo debajo de la primera línea <?php copia/pega lo siguiente:

?>
<!DOCTYPE html>
    <html>
        <br/>
        <br/>
        <br/>
        <body>
            <h2>Disculpa las molestias...
            <br/>
            Este sitio web
            <br/>
            realiza tareas de mantenimiento.
            <br/>

            Regresamos en breve...</h2>
        </body>
    </html>
<?php
exit;


Y subes ese archivo al servidor, reemplazándolo por el existente.

¡Acuérdate de borrar de nuevo esas líneas y re-subir el archivo wp-config.php a tu servidor una vez que hayas finalizado este tutorial!

7) Ingresa en el Panel de Control de tu servidor o alojamiento web -que probablemente será cPanel- y, una vez dentro, dirígete a la sección Databases o bases de datos. Clica en phpMyAdmin:


8) En el menú vertical de la izquierda, selecciona el nombre de la base de datos correspondiente a tu blog WP -a estas alturas deberías ya saber manejarte un poco con phpMyAdmin-. Observarás que se despliegan las tablas antes mencionadas.


9) En el menú general de phpMyAdmin, arriba a la derecha, clica en la pestaña SQL.


10) En la correspondiente área de texto que te presenta, copia/pega lo siguiente (IMPORTANTE - 2: cambia el prefijo de este ejemplo, marcado en rojo, por el tuyo propio):

RENAME table 'wp_commentmeta' TO 'flin53olf10_commentmeta';
RENAME table 'wp_comments' TO 'flin53olf10_comments';
RENAME table 'wp_links' TO 'flin53olf10_links';
RENAME table 'wp_options' TO 'flin53olf10_options';
RENAME table 'wp_postmeta' TO 'flin53olf10_postmeta';
RENAME table 'wp_posts' TO 'flin53olf10_posts';
RENAME table 'wp_terms' TO 'flin53olf10_terms';
RENAME table 'wp_term_relationships' TO 'flin53olf10_term_relationships';
RENAME table 'wp_term_taxonomy' TO 'flin53olf10_term_taxonomy';
RENAME table 'wp_usermeta' TO 'flin53olf10_usermeta';
RENAME table 'wp_users' TO 'flin53olf10_users';


(IMPORTANTE - 3: En el nuevo prefijo que vas a crear, mejor NO uses la expresión wp_nuevoprefijo_ en él, sino simplemente nuevoprefijo_, así se lo pondrás más complicado a los 'malos hackers').

Y acto seguido le das a la tecla 'Continuar' o bien 'Go' (en inglés).

11) Si además de esas 11 tablas comunes a cualquier instalación de Wordpress tuvieses alguna más, posiblemente esté relacionada con algún 'plugin' que tengas instalado. ¿Qué hacer entonces? No te compliques y pierde un poco de tiempo -no te arrepentirás-:

  1. O bien le preguntas al autor del 'plugin' si hay que renombrar esa tabla tras renombrar el prefijo general para todas las tablas,
  2. O bien renómbrala tú mismo/a a ver qué pasa. Si tu blog o la función que cumple ese 'plugin' se estropean, devuelve esa tabla a su nombre anterior.

¿Cómo renombrar una sola tabla? Seguro que ya has 'pillado' la dinámica: vas a la mencionada pestaña SQL y escribes y ejecutas:

RENAME table '................' TO '...............';

(simplemente sustituye los primeros puntos suspensivos por el nombre de la tabla a renombrar, y los segundos por el de la tabla ya renombrada).

12) Éste es un punto muy importante, y parece que aquí la cosa se complique un poco, pero tranquilo/a. Iremos sobre seguro:

¿Ya has cambiado el prefijo de las once tablas de tu blog WP? Vale.

Resulta que dentro de 2 de esas tablas, debes cambiar SÍ O SÍ también el prefijo de algunas de sus respectivas entradas, concretamente dentro de las tablas anteriormente denominadas wp_options y wp_usermeta (que en el ejemplo de este tutorial son flin53olf10_options y flin53olf10_usermeta, vamos que en tu caso serán nuevoprefijo_options y nuevoprefijo_usermeta. Vamos a ello paso a paso:

12.1) Seguimos dentro de phpMyAdmin. Clica ahora en la tabla wp_options (es decir, en nuevoprefijo_options puesto que ya la has renombrado). A la derecha, bajo la columna option_name busca la entrada:

'wp_user_roles'

Es probable que no la encuentres en la primera ni en la segunda página de esa tabla. Una vez que la hayas encontrado, la seleccionas, clicas en el botón Editar y renombras su prefijo wp_ , cambiándolo por aquél que elegiste antes para todas tus tablas principales. Te quedará como nuevoprefijo_user_roles, o siguiendo con el ejemplo de este tutorial, algo como:

flin53olf10_user_roles

Luego confirmas y ya está.

Si no modificas esta entrada de la tabla nuevoprefijo_options, probablemente tendrás problemas para 'loguearte' o registrarte en el área de administración de tu blog WP.

12.2) Todavía dentro de phpMyAdmin. Clica en la tabla wp_usermeta (o en nuevoprefijo_usermeta puesto que ya la has renombrado). En el amplio grupo de la derecha, probablemente advertirás debajo de la columna meta_keys algunas entradas QUE EMPIEZAN con el prefijo wp_. Vamos a cambiarlas todas ellas.

Podrías hacerlo como antes, seleccionando cada entrada en particular y editándola. Pero es más rápido y seguro cambiarlas todas de una sola vez. Ejecutando un código en SQL que lo hace todo de forma automatizada, que es lo que harás a continuación (de paso aprendes un poquito más cómo hacer cosas dentro de phpMyAdmin):

ya sabes, antes de copiar/pegar deberás modificar el prefijo flin53olf10_ del siguiente ejemplo por el tuyo propio:

UPDATE 'flin53olf10_usermeta'
SET meta_key = REPLACE (meta_key, 'wp_', 'flin53olf10_')
WHERE meta_key LIKE 'wp_%';

o lo que viene a ser lo mismo:

UPDATE 'nuevoprefijo_usermeta'
SET meta_key = REPLACE (meta_key, 'wp_', 'nuevoprefijo_')
WHERE meta_key LIKE 'wp_%';


repito, cambiando antes la expresión flin53olf10_ o bien nuevoprefijo_ por tu nuevo prefijo real.

y una vez más le das al botón Continuar o Go.

13) Recordatorio: ¿pusiste tu blog en 'modo mantenimiento' modificando el archivo wp-config.php? ¡Recuerda devolverlo YA a su estado anterior, sin el código 'de mantenimiento' que le hubieses añadido! De otro modo tu blog no estará 'online'.

Buenas noches, o buenos días, o buenas tardes... y buena suerte. Cualquier duda, deja tu comentario aquí abajo y veré si te puedo ayudar.

1 comentario:

  1. para los que no le funcion haganlo así: UPDATE `prefijo_options` SET `option_name` = 'prefijo_user_roles' WHERE `option_name` = 'wp_user_roles'

    ResponderEliminar

Resssopla aquí tu pregunta, tu respuesta, tu duda o tu fantasía...