sql >> Base de Datos >  >> RDS >> Mysql

Cómo cambiar el nombre de una base de datos en MySQL

En algunos casos, puede ser conveniente modificar rápidamente el nombre de una base de datos MySQL. Si bien solía existir un simple RENAME DATABASE comando en versiones anteriores de MySQL que estaba destinado a realizar esta tarea, RENAME DATABASE desde entonces, se eliminó de todas las versiones más nuevas para evitar riesgos de seguridad.

En cambio, exploraremos brevemente un puñado de métodos opcionales que se pueden usar para cambiar el nombre de su base de datos MySQL de forma rápida y segura.

Descargar y Reimportar

Cuando se trabaja con una base de datos relativamente pequeña, el método más rápido suele ser utilizar mysqldump comando de shell para crear una copia volcada de toda la base de datos, luego importe todos los datos a la base de datos recién creada con el nombre adecuado.

Comience emitiendo el siguiente mysqldump comando desde el indicador de shell, reemplazando el username apropiado , password y oldDbName valores. mysqldump se usa para crear copias de seguridad físicas de una base de datos, por lo que podemos usar esta copia para importar los datos a una nueva base de datos.

$ mysqldump -u username -p"password" -R oldDbName > oldDbName.sql

Estamos usando -p bandera seguida inmediatamente por nuestra contraseña para conectarse a la base de datos (sin espacios entre ellas) y evitar solicitudes de ingreso de contraseña al emitir estos comandos. Asegúrese de dejar las comillas circundantes porque las contraseñas con caracteres únicos pueden causar problemas de ejecución. El -R flag también es importante y le dice a mysqldump para copiar procedimientos y funciones almacenados junto con los datos normales de la base de datos.

Luego use mysqladmin comando para crear una nueva base de datos:

$ mysqladmin -u username -p"password" create newDbName

Por último, con la nueva base de datos creada, use mysql para importar el archivo de volcado que creamos en la nueva base de datos.

$ mysql -u username -p"password" newDbName < oldDbName.sql

Tres comandos básicos y su nueva base de datos ha sido creada. Una vez que haya verificado que todo está según lo previsto, puede continuar con la eliminación de la base de datos anterior.

Renombrar tablas con InnoDB

Si está utilizando MySQL versión 5.5 (o superior), es probable que esté utilizando el motor de almacenamiento InnoDB, lo que hace que la tarea de cambiar el nombre de las bases de datos sea bastante simple.

En resumen, puede usar la RENAME TABLE Comando dentro de un indicador de MySQL para cambiar efectivamente el nombre de la base de datos de una tabla en particular manteniendo intacto el nombre de la tabla. Sin embargo, hacerlo requiere que la base de datos con el nuevo nombre ya exista, así que comience creando una nueva base de datos usando mysqladmin comando de shell como se ve arriba.

Por ejemplo, si ya tenemos un catalog base de datos que queremos renombrar a library , primero crearíamos la nueva library base de datos:

$ mysqladmin -u username -p"password" create library

Ahora conéctese a mysql solicite y emita el siguiente MySQL RENAME TABLE instrucción para una tabla de su elección:

mysql> RENAME TABLE catalog.books TO library.books;

Acabamos de mover la totalidad de los books tabla del catalog base de datos a nuestra nueva library base de datos. Este comando se puede ejecutar manualmente para todas las tablas relevantes según se desee, o podemos simplificar la tarea con un script de shell como se ve a continuación.

Uso de una secuencia de comandos de Shell

Para todas las bases de datos excepto las más pequeñas, emitiendo manualmente RENAME TABLE los comandos para cada tabla no serán muy prácticos ni eficientes, pero afortunadamente podemos usar un comando de shell simple usando mysql utilidad para recorrer todas las tablas en nuestra antigua base de datos y cambiarles el nombre, moviéndolas así a la nueva base de datos.

Esta es la estructura básica del comando:

$ mysql -u dbUsername -p"dbPassword" oldDatabase -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE oldDatabase.$table TO newDatabase.$table"; done

Por lo tanto, para nuestro traslado desde el antiguo catalog base de datos a la nueva library base de datos, cambiaríamos la declaración de la siguiente manera:

$ mysql -u dbUsername -p"dbPassword" catalog -sNe 'show tables' | while read table; do mysql -u dbUsername -p"dbPassword" -sNe "RENAME TABLE catalog.$table TO library.$table"; done

También hemos agregado algunas banderas a nuestros comandos:

  • -s es la bandera para silent mode por lo que hay menos salida al shell.
  • -N evita la salida de nombres de columna de los resultados.
  • -e indica la declaración que sigue al -e la bandera debe ser ejecutada entonces el shell se cierra. Esto significa que las declaraciones 'show tables' y "RENAME TABLE catalog.$table TO library.$table" se ejecutan como instrucciones SQL normales, según se desee.

Eso es todo al respecto. Su base de datos MySQL ahora se renombra de manera efectiva.