ERRORE 1044 (42000): accesso negato per l'utente '' @ 'localhost' al database 'db'


164

Voglio iniziare a scrivere query in MySQL.

show grants Spettacoli:

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

Non ho un ID utente ma quando voglio fare un utente non ho privilegi, inoltre non so come fare privilegi quando nemmeno io ho un utente!

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

Ho provato ad accedere come 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
È necessario accedere come utente con autorizzazioni. Almeno rootavrebbe dovuto essere creato quando hai installato MySQL.
derobert,

durante l'installazione mi dice di impostare la password e l'ho impostato su root ora cosa posso fare?
Nickool,

9
Devi accedere come root, ad esempio eseguendo mysql -u root -p. Quindi avrai le autorizzazioni complete sul server di database e puoi creare altri utenti.
derobert,

quando accedi usando la riga di comando, esegui le seguenti operazioni per accedere come root: mysql -u root -p
Travis,

1
@nikparsa: No, lo avresti eseguito invece di "mysql", dal prompt della shell, non dal prompt di mysql.
derobert,

Risposte:


219

No, dovresti eseguire mysql -u root -pbash, non dalla riga di comando di MySQL. Se sei in mysql, puoi uscire digitando exit .


come posso andare a bash? Ho avuto problemi con l'installazione di mysql, vedi qui superuser.com/questions/377679/… So solo su di esso nella riga di comando
Nickool

6
usa 'quit' per uscire da mysql, quindi sarai in bash
Nowhy

23
Cordiali saluti per impostazione predefinita la password è vuota
bigpotato

Cosa succede se sto usando Windows?
PHPFan

exit o quit non funziona per me, ti preghiamo di fornire un altro modo. Sono su Windows 10
Metin Dagcilar

46

Potrebbe essere necessario configurare un account root per il tuo database MySQL:

Nel tipo di terminale:

mysqladmin -u root password 'root password goes here'

E poi per invocare il client MySQL:

mysql -h localhost -u root -p

1
Questo ha funzionato per me, inizialmente funzionava bene e poi improvvisamente ha smesso di funzionare un giorno. Qualche idea, perché questo accade in primo luogo?
mu 無

@soleshoe sto ottenendo un errore: sudo: mysqladmin: comando non trovato per favore aiutatemi cosa posso fare ?? mysql è alreay in esecuzione in Preferenze di Sistema.
Hitarth,

29

Sono stato portato qui da un altro problema. Ogni volta che ho provato ad accedere, ho ricevuto quel messaggio perché invece di autenticare correttamente ho effettuato l'accesso come utente anonimo. La soluzione al mio problema era:

Per vedere quale utente sei e di quali autorizzazioni disponi:

select user(), current_user();

Per eliminare il fastidioso utente anonimo:

drop user ''@'localhost';

1
Ciò ha risolto il problema per me anche se stavo usando "mysql -u username -p". Molto strano: user () era il mio nome utente, ma current_user () era localhost ... non sai perché?
Ethanpil,

2
@Leftteris hi .. im sto ottenendo questo errore: Accesso negato; hai bisogno (almeno uno dei) dei privilegi CREATE USER per questa operazione Quando provo a eliminare l'utente "" @ "localhost";
Hitarth,

15

Questo ha a che fare con le autorizzazioni utente. Dare le sovvenzioni adeguate risolverà questo problema.

Passaggio [1]: aprire il terminale ed eseguire questo comando

$ mysql -uroot -p

Output [1]: questo dovrebbe darti il ​​prompt mysql mostrato sotto

inserisci qui la descrizione dell'immagine

Passo 2]:

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

Sintassi:

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

Nota:

  • il nome host può essere indirizzo IP, localhost, 127.0.0.1
  • In database_name/table_name , * indica tutti i database
  • In hostname, per specificare tutti gli host utilizzare '%'

Passaggio [3]: uscire dal prompt mysql corrente immettendo quit/ exitcommand o premere Ctrl+D.

Passaggio [4]: ​​accedi al tuo nuovo utente

$ mysql -uparsa -pyour_password

Passaggio [5]: creare il database

mysql> create database `database_name`;

quando lo faccio CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';ottengo un errore: ERRORE 1227 (42000): Accesso negato; hai bisogno (almeno uno dei) dei privilegi di CREATE USER per questa operazione
aereo

Hai effettuato l'accesso al client mysql usando l'utente root
theBuzzyCoder il

9

Potresti provare il comando di accesso completo:

mysql -h host -u root -p 

dove sarebbe l'host 127.0.0.1.

Fallo solo per assicurarti che la cooperazione esista.

L' mysql -u root -putilizzo mi consente di eseguire molte ricerche nel database, ma rifiuta qualsiasi creazione di database a causa di un'impostazione del percorso.


6

Innanzitutto, se non si ha familiarità con la riga di comando, provare a utilizzare phpmyadmin dal browser Web. Questo assicurerà di avere effettivamente creato un database mysql e un nome utente.

Ecco come ti connetti dalla riga di comando (bash):

mysql -h hostname -u username -p database_name

Per esempio:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb

1
-pè per la password e la si utilizza per passare il nome del database. Inoltre, per la password, non ci dovrebbe essere uno spazio b / ne -pla password effettiva. Utilizzare -Dper connettersi a un database specifico.
sv.

5

Se ci si trova in una MySQLshell, uscire digitando exit , che tornerà al prompt dei comandi.

Ora inizia MySQLusando esattamente il seguente comando:

sudo mysql -u root -p

Se il tuo nome utente è diverso da root, sostituisci "root" nel comando sopra con il tuo nome utente:

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

Ti chiederà quindi l' MySQLaccount / la password e MySQLnon mostrerai alcun problema di privilegio di accesso in seguito.


dopo aver inserito la password
ricevo

non dovrebbe essere "sudo:", dovrebbe essere "sudo" ... Se non è un errore di battitura, penso che questo sia il problema.
Kshitij Mittal,

2

@Nickparsa ... hai 2 problemi:

1). mysql -uroot -p dovrebbe essere digitato in bash (noto anche come terminale) e non nella riga di comando di MySQL. Correggi questo errore digitando

exit

nella riga di comando di MySQL. Ora sei tornato nella tua riga di comando bash / terminal.

2). Hai un errore di sintassi:

mysql -uroot -p; 

il punto e virgola davanti a -p deve andare. La sintassi corretta è:

mysql -uroot -p

digitare la sintassi corretta nella riga di comando di bash. Immettere una password se ne è stata impostata una; altrimenti basta premere il pulsante Invio. Dovresti ottenere una risposta simile a questa: inserisci qui la descrizione dell'immagine

Spero che questo ti aiuti!


Salve, ho ricevuto lo schermo in basso dopo l'incendio, questo encomio. / usr / local / mysql / bin / mysql ma successivamente quando provo a creare un database usando "CREATE DATABASE books;" visualizzo l'errore: ERRORE 1044 (42000): accesso negato per l'utente '' @ 'localhost' al database ' libri 'per favore aiutatemi
Hitarth

0

La maggior parte degli sviluppatori accede al server (presumo che tu abbia il nome utente e la password per il database mysql) quindi da Bash passano per mysql> promptutilizzare quindi il comando seguente (che non funziona

mysql -h localhost -u root -p

Ciò che deve essere fatto è usare il comando sopra nel prompt di bash -> su facendo così chiederà la password se dato ci vorrà direttamente al prompt di mysql e

quindi database, tabella può essere creata una per una

Ho affrontato un deadlock simile, quindi condividendo l'esperienza


0

Avevo il comando corretto per le risposte precedenti, quello che mi mancava era sul Workbench, dove menzioniamo 'Limita connettività dall'host' per l'utente, il valore predefinito è "%" - cambialo in "localhost" e si connette bene in seguito!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.