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

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 .


? 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

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';

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`;

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.


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

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.


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!


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


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.