Erro 1044 Access denied for user to database: quando o ficheiro tenta criar a base de dados

O 1044 aparece quase sempre na hora de importar um ficheiro .sql. Diz que o utilizador, já aceite, não tem permissão sobre aquela base de dados. O erro vê-se assim: #1044 - Access denied for user 'abc_util'@'localhost' to database 'outra_base'. Repare no nome do fim: se não é a base para onde você está a importar, já tem o culpado.

Numa conta de hospedagem partilhada não se criam bases de dados por instruções SQL: criam-se no cPanel, em MySQL Databases. Um ficheiro vindo de outro servidor traz muitas vezes linhas que tentam fazer exactamente isso, e a base de dados recusa.

O que costuma estar no ficheiro

A linha no ficheiro Porque falha aqui
CREATE DATABASE ... O utilizador da conta não cria bases por SQL. A base já existe, criou-a você no cPanel.
USE `outra_base`; Manda trabalhar numa base com o nome da origem, que aqui não existe ou não é sua. É o caso mais comum do 1044.
DROP DATABASE ... Apagar uma base inteira também não é permitido por SQL. Apague o conteúdo pelo phpMyAdmin, se for o caso.
DEFINER=... em vistas, gatilhos ou rotinas Aponta para um utilizador que não é o seu. Costuma dar outro número (o 1227), mas a cura é a mesma: tirar a cláusula ou trocá-la pelo seu utilizador.
GRANT ... ou CREATE USER ... Utilizadores e privilégios criam-se no cPanel, não por SQL.

Corrigir, passo a passo

1 Crie a base e o utilizador no cPanel, e junte-os em Add User To Database com todos os privilégios. Veja criar um utilizador da base de dados com os privilégios certos.
2 Faça uma cópia do ficheiro e abra-a num editor de texto sério. Os ficheiros grandes pedem um editor feito para isso; o Bloco de Notas pode engasgar.
3 Procure as linhas problemáticas: CREATE DATABASE, USE, DROP DATABASE. Com SSH, grep -n "CREATE DATABASE" ficheiro.sql diz em que linha estão.
4 Apague essas linhas (ou ponha -- à frente, que as transforma em comentário) e grave.
5 No phpMyAdmin escolha a base certa na coluna da esquerda antes de importar. É essa que recebe as tabelas. O limite de tamanho do ficheiro tem o seu artigo: importar com o phpMyAdmin.
Um prefixo diferente não é erro do ficheiro. Se as tabelas têm o prefixo de outra instalação (por exemplo wp_ na origem e outro no wp-config.php daqui), o site vê uma base vazia. Não confunda com permissões: confira o prefixo da aplicação.
Ficheiro grande de mais para abrir? Divida o trabalho: importe por SSH, onde o ficheiro não passa pelo browser e as linhas más também se tiram com um comando. Veja importar uma base de dados grande por SSH.

Limpou o ficheiro e o 1044 continua? Diga-nos o nome da base de destino e a mensagem inteira.

Abrir um pedido de suporte

VEJA TAMBÉM

Importar com o phpMyAdmin, e o limite de tamanho que o trava

Importar uma base de dados grande por SSH

Criar um utilizador da base de dados com os privilégios certos

Erro 1045: as causas, por ordem

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupom)

Ver planos
  • 0 Usuários acharam útil
Esta resposta lhe foi útil?