ERRO 1044 (42000): acesso negado pelo usuário '' @ 'localhost' ao banco de dados 'db'

164

Eu quero começar a escrever consultas no MySQL.

show grants mostra:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

Não tenho nenhum ID de usuário, mas quando quero criar um usuário não tenho privilégios, também não sei como criar privilégios quando nem mesmo tenho um usuário!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

Tentei entrar como root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1
Nickool
fonte
3
Você precisa fazer login como usuário com permissões. Pelo menos rootdeveria ter sido criado quando você instalou o MySQL.
derobert
durante a instalação, ele diz para definir a senha e defino-a como root agora, o que posso fazer?
Nickool
9
Você precisa fazer login como root - por exemplo, executando mysql -u root -p. Em seguida, você terá permissões completas no servidor de banco de dados e poderá criar outros usuários.
derobert
ao fazer login usando a linha de comando, faça o seguinte para efetuar login como root: mysql -u root -p
Travis
1
@nikparsa: Não, você executaria isso em vez de 'mysql' - no prompt do shell, não no prompt do mysql.
derobert

Respostas:

219

Não, você deve executar mysql -u root -pno bash, não na linha de comando do MySQL. Se você estiver no mysql, poderá sair digitando exit .

Não por que
fonte
? como eu posso ir para a festa que eu tinha problema ao instalar mysql ver aqui superuser.com/questions/377679/... Eu só sei abt-lo na linha de comando
Nickool
6
use 'quit' para sair do mysql, então você estará no bash
Nowhy
23
FYI por padrão a senha é em branco
bigpotato
E se eu estiver usando o Windows?
PHPFan
sair ou sair não está funcionando para mim, forneça outra maneira. Estou no windows 10
Metin Dagcilar
46

Pode ser necessário configurar uma conta root para o seu banco de dados MySQL:

No tipo de terminal:

mysqladmin -u root password 'root password goes here'

E então para invocar o cliente MySQL:

mysql -h localhost -u root -p
soleshoe
fonte
1
Este funcionou para mim, estava funcionando bem inicialmente e de repente parou de funcionar um dia. Alguma idéia, por que isso acontece em primeiro lugar?
precisa
@ soleshoe estou recebendo erro: sudo: mysqladmin: comando não encontrado, por favor me ajude o que posso fazer? O mysql já está sendo executado no System Preference.
Hitarth
29

Eu fui trazido aqui por um problema diferente. Sempre que tentava fazer login, recebia essa mensagem porque, em vez de me autenticar corretamente, fazia login como usuário anônimo. A solução para o meu problema foi:

Para ver qual usuário você é e cujas permissões você possui:

select user(), current_user();

Para excluir o usuário anônimo irritante:

drop user ''@'localhost';
Lefteris E
fonte
1
Isso resolveu o problema para mim, embora eu estivesse usando "mysql -u nome de usuário -p". Muito estranho: user () era meu nome de usuário, mas current_user () era localhost ... não sabe por quê?
Ethanpil 02/07/2014
2
@ Leftteris oi .. estou recebendo este erro: Acesso negado; você precisa (pelo menos um) dos privilégios CREATE USER para esta operação Quando tento remover o usuário '' @ 'localhost';
Hitarth
15

Isso é algo a ver com permissões de usuário. A concessão de subsídios adequados resolverá esse problema.

Etapa [1]: abra o terminal e execute este comando

$ mysql -uroot -p

Saída [1]: Isso deve fornecer o prompt do mysql mostrado abaixo

insira a descrição da imagem aqui

Passo 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Sintaxe:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

Nota:

  • hostname pode ser o endereço IP, localhost, 127.0.0.1
  • Em database_name/ table_name, * significa todos os bancos de dados
  • Em hostname, para especificar todos os hosts, use '%'

Etapa [3]: Saia do prompt atual do mysql digitando quit/ exitcommand ou pressione Ctrl+D.

Etapa [4]: ​​faça login no seu novo usuário

$ mysql -uparsa -pyour_password

Etapa [5]: criar o banco de dados

mysql> create database `database_name`;
theBuzzyCoder
fonte
quando eu CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';recebo erro: ERRO 1227 (42000): Acesso negado; Você precisa (pelo menos uma das) o privilégio CREATE (s) USUÁRIO para esta operação
aviões
Você conectado ao cliente mysql usando usuário root
theBuzzyCoder
9

Você pode tentar o comando de login completo:

mysql -h host -u root -p 

onde o anfitrião estaria 127.0.0.1.

Faça isso apenas para garantir a cooperação.

Usar mysql -u root -pme permite fazer muitas pesquisas no banco de dados, mas recusa qualquer criação de banco de dados devido a uma configuração de caminho.

Raio
fonte
6

Primeiro, se você não estiver familiarizado com a linha de comando, tente usar o phpmyadmin no seu navegador da web. Isso garantirá que você realmente tenha um banco de dados mysql criado e um nome de usuário.

É assim que você se conecta a partir da linha de comando (bash):

mysql -h hostname -u username -p database_name

Por exemplo:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
fabiog
fonte
1
-pé para senha e você está usando para passar o nome do banco de dados. Além disso, para senha, não deve haver um espaço preto e branco -pe a senha real. Use -Dpara se conectar a um banco de dados específico.
sv.
5

Se você estiver em um MySQLshell, saia do programa digitando exit , que retornará ao prompt de comando.

Agora comece MySQLusando exatamente o seguinte comando:

sudo mysql -u root -p

Se o seu nome de usuário não for root, substitua 'root' no comando acima por seu nome de usuário:

sudo mysql -u <your-user-name> -p

Em seguida, ele solicitará a MySQLconta / senha e você MySQLnão exibirá nenhum problema de privilégio de acesso.

Kshitij Mittal
fonte
após digitar a senha i recebendo "sudo: mysql: command not found" Por favor me ajudem nessa
Hitarth
não deve ser "sudo:", deve ser "sudo" ... Se não for um erro de digitação, acho que esse é o problema.
Kshitij Mittal 04/04
2

@Nickparsa… você tem 2 problemas:

1) mysql -uroot -p deve ser digitado no bash (também conhecido como seu terminal) e não na linha de comando do MySQL. Você corrige esse erro digitando

exit

na sua linha de comando do MySQL. Agora você está de volta à sua linha de comando do bash / terminal.

2) Você tem um erro de sintaxe:

mysql -uroot -p; 

o ponto e vírgula na frente de -p precisa ir. A sintaxe correta é:

mysql -uroot -p

digite a sintaxe correta em sua linha de comando do bash. Digite uma senha se você tiver uma configurada; caso contrário, basta pressionar o botão Enter. Você deve obter uma resposta semelhante a esta: insira a descrição da imagem aqui

Espero que isto ajude!

Uzzar
fonte
Oi eu tenho a tela abaixo abaixo diretamente após o fogo este elogio. / usr / local / mysql / bin / mysql, mas depois disso, quando tento criar banco de dados usando "CREATE DATABASE books;", estou recebendo um erro: ERRO 1044 (42000): acesso negado pelo usuário '' @ 'localhost' ao banco de dados ' me ajude por favor livros
Hitarth
0

A maioria dos desenvolvedores efetua login no servidor (presumo que você tenha nome de usuário e senha para o banco de dados mysql) e, a partir do Bash, eles alternam para mysql> promptusar o comando abaixo (o que não funciona)

mysql -h localhost -u root -p

O que precisa ser feito é usar o comando acima no prompt do bash -> ao fazê-lo, ele solicitará a senha, caso seja necessário, levará diretamente ao prompt do mysql e

então banco de dados, a tabela pode ser criada uma a uma

Enfrentei um impasse semelhante, então, compartilhando a experiência

Devrath
fonte
0

Eu tinha o comando correto de acordo com as respostas acima, o que eu perdi foi no Workbench, onde mencionamos 'Limitar a conectividade do host' para o usuário, o padrão é "%" - altere para "localhost" e, em seguida, conecte-se bem!

killjoy
fonte