LeegaR Blog

Cambiar el prefijo de la base de datos de WordPress

Si hemos realizado una instalación simple de WordPress, el que considero yo el mejor gestor de contenidos para la creación de un Blog en la actualidad, seguramente nuestra base de datos cuente con el predeterminado prefijo de “wp_” previo al nombre de cada una de las tablas… Este prefijo, durante el proceso de instalación, puede ser fácilmente cambiado y refuerza la seguridad de nuestra bitácora frente a ataques que “piensan” que el prefijo de nuestra base de datos es “wp_” (por lo cual si lo cambiamos tendrán que adivinar, o averiguar, de cual se trata), pero si ya tenemos un Blog en funcionamiento y queremos cambiar los prefijos para aumentar la seguridad podemos realizar lo siguiente…

En primer lugar pensaremos en un nuevo prefijo, el cual aconsejo que sea aleatorio (para ejemplificar esta guía voy a tomar el prefijo “379009_“), y accederemos al archivo “wp-config.php” dentro del directorio donde tenemos instalado WordPress y editaremos el prefijo predeterminado en la siguiente porción del archivo…

[sourcecode language='php']

// You can have multiple installations in one database if you give each a unique prefix
$table_prefix  = ‘379009_’;   // Only numbers, letters, and underscores please!

[/sourcecode]

Guardaremos los cambios en dicho archivo y accederemos a nuestra base de datos mediante phpMyAdmin, o en caso de no poder hacerlo culpa de nuestro hosting tendremos que instalar el plugin “WP Database Manager“, y ejecutar la siguiente cadena dentro de la pestaña “SQL“…

[sourcecode language='sql']

ALTER TABLE wp_comments RENAME TO 379009_comments;
ALTER TABLE wp_links RENAME TO 379009_links;
ALTER TABLE wp_options RENAME TO 379009_options;
ALTER TABLE wp_postmeta RENAME TO 379009_postmeta;
ALTER TABLE wp_posts RENAME TO 379009_posts;
ALTER TABLE wp_term_relationships RENAME TO 379009_term_relationships;
ALTER TABLE wp_term_taxonomy RENAME TO 379009_term_taxonomy;
ALTER TABLE wp_terms RENAME TO 379009_terms;
ALTER TABLE wp_usermeta RENAME TO 379009_usermeta;
ALTER TABLE wp_users RENAME TO 379009_users;

[/sourcecode]

Lo anterior lo que provocará es que se renombrará el nombre de las tablas por defecto en WordPress cambiando el prefijo… Tengamos en cuenta en este caso dos cosas: en primer lugar el prefijo “379009_” deberá ser reemplazado por el prefijo a elección, y además el código anterior a ejecutar no cubre las tablas creadas por una extensión de WordPress que utilice la base de datos… Por eso mismo deberemos agregar más líneas al código y sumar las tablas restantes…

[sourcecode language='sql']

ALTER TABLE wp_NOMBRE-DE-LA-TABLA RENAME TO 379009_NOMBRE-DE-LA-TABLA;

[/sourcecode]

Una vez escrito todo procederemos a ejecutar la consulta y ver como las tablas cambian su prefijo…

Prefijo Base de Datos de WordPress

De esta forma nuestra bitácora estará nuevamente en perfecto funcionamiento a excepción del hecho de que no podremos acceder al Panel de Administración debido a que todavía es necesario renombrar algo que el código anterior no podía hacer por su cuenta… Para esto ingresaremos nuevamente mediante phpMyAdmin a nuestra base de datos, y dentro de la nueva tabla “379009_options” nos iremos a “Examinar” y en la columna “option_name” buscaremos el valor “wp_user_roles” que editaremos y reemplazaremos por “379009_user_roles“…

Lo mismo tendremos que hacer para los valores “wp_capabilities“, “wp_user_level“, y “wp_autosave_draft_ids” ubicados dentro de la tabla “379009_usermeta“, los cuales serán editados para cambiarle el prefijo por el nuevo seleccionado… Puede que algunos plugins instalados afecten nuestra base de datos y creen valores con el viejo prefijo, por ende tendremos que revisar esas tablar y corregir aquellos viejos prefijos, reemplazándolos por el nuevo…

Siguiendo los pasos al pie de la letra, con previa copia de seguridad de nuestra base de datos, tendremos nuestra bitácora funcionando a la perfección y con un mayor nivel de seguridad… La cadena a ejecutar en nuestra base de datos fue extraída del artículo “Changing Your Wordpress Database Prefix“, y lo demás agregado gracias a todo lo que navegue en Google… Saludos…