Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zugriff für Benutzer root @ localhost verweigert

Lassen Sie die folgenden 2 Zeilen fehlschlagen, wenn der Benutzer existiert und blahblah spielt erstmal keine Rolle:

create user 'root'@'localhost' identified by 'blahblah';
create user 'root'@'127.0.0.1' identified by 'blahblah';

Machen Sie Ihre Stipendien:

grant all on *.* to 'root'@'localhost';
grant all on *.* to 'root'@'127.0.0.1';

Ändern Sie das Passwort in etwas, an das Sie sich erinnern werden:

set password for 'root'@'localhost' = password('NewPassword');
set password for 'root'@'127.0.0.1' = password('NewPassword');

Sehen Sie, wie viele Root-Benutzer Sie haben. Ein echter Benutzer ist eine Benutzer/Host-Kombination. Das Passwort wird gehasht angezeigt:

select user,host,password from mysql.user where user='root';

oder

select user,host,authentication_string from mysql.user where user='root';

Die zweite oben ist für MySQL 5.7

Wenn Sie mehr als die beiden oben genannten Benutzer erhalten, löschen Sie die anderen, z. B.:

drop user 'root'@'%';   -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';

Du hast immer noch nur 2? Hoffentlich. Verwenden Sie zur Überprüfung die oben stehenden select stmts.

Verbinden Sie eine Benutzer-App nicht mit Root. root dient nur der Wartung. Es spielt keine Rolle, ob es sich um serverseitigen Code handelt oder ob ein Administrator ihn ausführt. Code, der nicht gesichert und/oder mit schädlichen Anweisungen injiziert ist, wird als Root ausgeführt. Also, deshalb.