[LAMP] Mysql Access denied for user 'root'@'localhost'

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
pippuccio76
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 704
Iscrizione: venerdì 16 settembre 2005, 20:51
Desktop: Xubuntu
Distribuzione: 20.04
Sesso: Maschile

[LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da pippuccio76 »

Salve come da titolo non riesco ad accedere a mysql (su lubuntu 20.04) , io utilizzo adminer per la gestione e quando tento di accedere ho l'errore :

Access denied for user 'root'@'localhost'


Ho provato a seguire questa guida :
https://wiki.ubuntu-it.org/Server/MySql/PasswordReset
sia il passo primo che secondo ma stesso problema.
pippuccio76
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 704
Iscrizione: venerdì 16 settembre 2005, 20:51
Desktop: Xubuntu
Distribuzione: 20.04
Sesso: Maschile

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da pippuccio76 »

Ho visto che mi fa accedere da terminale solamente come superuser
pippuccio76
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 704
Iscrizione: venerdì 16 settembre 2005, 20:51
Desktop: Xubuntu
Distribuzione: 20.04
Sesso: Maschile

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da pippuccio76 »

Sono riuscito a creare un utente con :

Codice: Seleziona tutto

create user 'stefano'@'localhost' identified by 'root';
Se cerco di creare un database :

Codice: Seleziona tutto

CREATE DATABASE `prova` COLLATE 'utf8mb4_unicode_ci';
ho:

Codice: Seleziona tutto

Access denied for user 'stefano'@'localhost' to database 'prova'
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da DoctorStrange »

Dunque, visto che non ti risponde nessuno, mi avventuro io.
Prima di tutto c'è da dire questo, non appena hai installato il DB, almeno le prime volte, sarebbe meglio evitare di usare parser od intermediari, come questa applicazione che usi: "adminer", fra l'altro personalmente non l'ho mai sentito.

Tieni anche presente, che su linux, e soprattutto su MySQL, è soprattutto una questione di utenze e credenziali, e solo secondariamente ci sono problemi di configurazioni specifiche.

Dei messaggi che hai postato, non si capisce quali utenze tu abbia usato sia per connetterti a Mysql, sia quali utenze hai usato per provare a creare i database.

Nel tuo primo tentativo, hai avuto questo generico messaggio di errore:

Codice: Seleziona tutto

Access denied for user 'root'@'localhost'
Ma non hai specificato cosa tu hai provato a fare per connetterti. Con quale utenza? Quale stringa hai usato per connetterti, oppure come hai configurato il parser specifico che usi?

Tendenzialmente quello è un generico errore che ti dice che con quell'utente non è stato in grado di connettersi a quel DB. Mi sembra una brutta idea, tentare di ripristinare una password di root, se non sei piu che sicuro di aver perso la stessa password di root. E non mi sembra sia il tuo caso.

Poco sotto poi dici:
pippuccio76 ha scritto:Ho visto che mi fa accedere da terminale solamente come superuser
La domanda a questo punto sorge spontanea: come ti sei connesso con superuser? Quale stringa di connessione hai usato, o come hai configurato l'accesso?
pippuccio76 ha scritto:Sono riuscito a creare un utente con :

Codice: Seleziona tutto

create user 'stefano'@'localhost' identified by 'root';
Vale quanto detto poco sopra, quanto ti connetti con l'utenza root, puoi creare utenze e DB, e puoi anche assegnare grant alle utenze create. Root è l'unica utenza preposta a fare queste attività, con le altre utenze puoi fare (solo se autorizzate dal root), operazioni sulle tabelle.
pippuccio76 ha scritto: Se cerco di creare un database :

Codice: Seleziona tutto

CREATE DATABASE `prova` COLLATE 'utf8mb4_unicode_ci';
ho:

Codice: Seleziona tutto

Access denied for user 'stefano'@'localhost' to database 'prova'
Probabilmente hai provato a creare un DB usando un'utenza generica.

Il consiglio che, a questo punto ti do, è di provare a connetterti al tuo DB con questo comando:

Codice: Seleziona tutto

sudo mysql --user='root' --password='password-di-root' --host=localhost --port=3306 --database='mysql';
Ti invito a notare, in questo comando il sudo all'inizio. Questo serve perche, quando vuoi connetterti a mysql con l'utenza root, devi specificare il root anche nello stesso comando di connessione.

Se questo comando che ti ho dato funziona, sarai connesso con l'utenza di root, alla sessione del tuo DB, ed in particolare sarai connesso ad un DB interno che si chiama "mysql". Qui, dovresti trovare una tabella che si chiama "user". Prova a dare un

Codice: Seleziona tutto

describe user;
per vedere come è composta questa tabella.

Ti consiglio di estrarre questi dati:

Codice: Seleziona tutto

select Host, User, authentication_string from user;
Le informazioni che otterrai da questa query sono, nell'ordine, l'elenco di tutti gli utenti che hai creato sul DB, e che sono autorizzati a connettersi.
In particolare, il campo "Host", ti dirà se quello specifico utente può connettersi solo dal "localhost", oppure da una qualunque postazione "%".
Ti dico questo perche, per esempio, uno degli utenti che hai creato per potersi connettere, nella stringa di connessione deve specificare esplicitamente "localhost", e quindi, quello specifico utente dovrebbe connettersi tramite un:

Codice: Seleziona tutto

mysql --user="stefano" --host=localhost --password="password-di-stefano";
Una volta che sei certo di poterti connettere tramite riga di comando sia con l'utenza root, che l'utenza "stefano", allora possiamo andare avanti.

A questo punto, dovrai assegnare all'utenza "stefano", le grant per accedere a quello specifico DB. Per farlo, accederai come root e darai:

Codice: Seleziona tutto

grant select,create,alter privileges on prova.* to 'stefano'@'%';

Codice: Seleziona tutto

flush privileges;
Saluti
pippuccio76
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 704
Iscrizione: venerdì 16 settembre 2005, 20:51
Desktop: Xubuntu
Distribuzione: 20.04
Sesso: Maschile

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da pippuccio76 »

Non capisco perchè non mi viene chiesto di inserire una password come nelle vecchie installazioni password che poi uso con adminer o phpmyadmin o qualsiasi altro strumento per accedere , ora ad esempio su una nuova installazione di xubuntu (notebook tornato dall'assistenza su cui era montato xubuntu 18.04 e che funzionava perfettamente) :


dai comandi che mi hai dato sembra che root non abbia password

Immagine

ma se da adminer accedo come root e senza pw :

Immagine

HO sempre lo stesso errore

stesso problema con phpmyadmin :
Immagine
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da DoctorStrange »

Era proprio come pensavo. Ora le cose sono finalmente un po più chiare. L'uso di adminer o di qualunque altra interfaccia grafica, non ti permette l'accesso al db con l'utenza root, perché é adminer stesso, a non avere credenziali root sul sistema operativo.
Non so di preciso come tu avvii adminer ma, se per esempio, usassi il terminale, e lo potessi avviare con un comando del tipo:

Codice: Seleziona tutto

sudo adminer;
allora adminer sarebbe avviato come root e forse ti consentirebbe l'accesso, ma non ti consiglio assolutamente di tentare questa strada. MAI avviare applicazioni grafiche con sudo. Ci sarebbero grossi problemi di sicurezza sul sistema. Era per farti capire il motivo per cui, secondo me, hai quei problemi di accesso.
Infatti con la stringa di connessione che ti ho suggerito si connette con root senza problemi.

Ora sappiamo che funziona tutto regolarmente.

Per quanto riguarda root, se non mi ricordo male, quando si installa mysql, l'utenza root non ha alcuna password associata, quindi dovresti poter accedere all'istanza root di mysql, con:

Codice: Seleziona tutto

sudo mysql --user='root' --password='' --host=localhost --database='mysql';
Se poi vorrai, potrai decidere di assegnare una password all'utenza root. Cosa consigliata, soprattutto se dovrai esporre questo DB su internet.

La cosa comunque che ti consiglierei al momento, è di creare un'utenza generica, e di assegnargli le grant necessarie.

Dov'è finito l'utente 'Stefano', che avevi detto di aver creato correttamente?
Se non compare nella tabella mysql.user, allora non esiste.

Accedi con root, con il comando che ti ho scritto sopra, crea un utente con la sua password, ed assegnati le grant come ho scritto nel mio messaggio precedente, autorizzandolona leggere e scrivere sulla tabella, poi vedremo di fare il resto.
pippuccio76
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 704
Iscrizione: venerdì 16 settembre 2005, 20:51
Desktop: Xubuntu
Distribuzione: 20.04
Sesso: Maschile

Re: [LAMP] Mysql Access denied for user 'root'@'localhost'

Messaggio da pippuccio76 »

Ho risolto creando un altro utente come dici tu e come spiegato in questa guida :

https://devanswers.co/phpmyadmin-access ... localhost/

ora creo e posso utilizzare tutte le funzioni .

ps. non c'è stefano (che ho creato adesso ) perchè è il pc tornato dall'assistenza con nuova installazione
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 13 ospiti