Como renomear um banco de dados MySQL?

38

Como renomear um banco de dados MySQL?

O manual on-line do MySQL falou sobre o comando RENAME DATABASE (esta página de documentação foi removida pelo Oracle há algum tempo):

This statement was added in MySQL 5.1.7 but was found to be dangerous and was removed in MySQL 5.1.23.

Então, como proceder? O raciocínio: Começamos com um nome de código para o projeto e queremos que o nome do banco de dados agora reflita o nome definitivo do projeto.

    
por nalply 27.10.2010 / 09:35

6 respostas

48

De esta postagem no blog de Ilan Hazan:

No MySQL, não há suporte para renomeação de banco de dados. Para renomear um banco de dados MySQL, você pode fazer o seguinte:

  1. Crie um novo banco de dados e renomeie todas as tabelas no banco de dados antigo para estarem no novo banco de dados:

    CREATE database new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
    DROP database db_name;
    
  2. No shell do Linux, use mysqldump para fazer backup do banco de dados antigo e, em seguida, restaure o banco de dados despejado sob um novo nome usando o utilitário MySQL. Por fim, use o comando drop database para descartar o banco de dados antigo. Esta opção pode ter um desempenho ruim para um banco de dados grande.

    mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name"
    mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
    
  3. Escreva um script Linux simples (minha solução favorita)

    #!/bin/bash
    
    mysqlconn="mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost"
    olddb=xxxx
    newdb=xxxx
    
    #$mysqlconn -e "CREATE DATABASE $newdb"
    params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
    
    for name in $params; do
          $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. Se todas as suas tabelas forem MyISAM, você pode renomear o antigo nome da pasta do banco de dados:

    1. Encerre o servidor MySQL,
    2. Renomeie o nome da pasta do banco de dados para o novo nome,
    3. Inicie o servidor MySQL.
por 05.09.2014 / 18:27
9

O MySQL é meio ruim para isso. A única solução confiável sólida é usar phpMyAdmin .

Login - > clique em Scheme - > clique em Operations - > encontrar Rename database to: - > escreva NewName > clique em Go .

Tão simples quanto isso. Todas as permissões são transferidas.

    
por 27.09.2012 / 17:40
4

Eu tenho a tendência de criar um novo banco de dados e depois fazer o dump das antigas, em um arquivo .sql (com mysqldump), editar o arquivo, fazer algum tipo de s/old_database/new_database/g e então reimportá-lo para o novo db.
Provavelmente não é a melhor maneira de fazer isso, mas funciona.

    
por 27.10.2010 / 09:42
4

Eu encontrei uma solução muito simples: Encerre o MySQL, renomeie o diretório do banco de dados e reinicie. É tudo!

É um pouco perigoso se você tiver código SQL ou dados referentes ao nome antigo. Então você precisa mudar isso também antes de reiniciar o aplicativo. Mas eu não precisei fazer isso, mas YMV.

Googling dá algumas dicas como estas:

link

link

    
por 29.10.2010 / 15:50
1

Eu usei o seguinte método para renomear o banco de dados

  1. faça backup do arquivo usando mysqldump ou qualquer ferramenta de banco de dados, por exemplo, heidiSQL, administrador do mysql, etc.

  2. Abra o arquivo de backup (por exemplo, arquivo de backup.sql) em algum editor de texto.

  3. Pesquise e substitua o nome do banco de dados e salve o arquivo.

  4. Restaurar o arquivo sql editado

por 11.09.2013 / 07:26
0

Se você tiver a chance de usar uma Ferramenta de Gerenciamento do MySQL (por exemplo, phpMyAdmin), então você pode renomeá-la facilmente conforme eles criam a consulta para você.

No phpMyAdmin eles também criam cada tabela e inserem os dados por "INSERT INTO ... SELECT * FROM ...". Então, ao encadear, eles copiam os dados.

Se você não puder fazer isso, eu recomendo fazer um dump e reimportar o arquivo sql em um novo banco de dados.

Boa sorte!

Atenciosamente, Ben.

    
por 27.10.2010 / 10:53