Verwenden Sie diesen Befehl
GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';
Ich versuche mich einzuloggen mit:
mysql -u brian -ppassword
Der Fehler ist:
ERROR 1045 (28000): Access denied for user 'brian'@'localhost' (using password: YES)
Ich mache das als root und habe versucht Privilegien zu leeren.
Ich habe es mit unzähligen Benutzern ausprobiert, aber es scheint nicht zu funktionieren. Ich kann einen Benutzer ohne Passwort erstellen und Login funktioniert. Befehlszeile und von phpmyadmin
Prüfen Sie auch, ob sich der Benutzer in mysql.user befindet.
Zuschüsse für brian Shows anzeigen:
| GRANT ALL PRIVILEGES ON *.* TO 'brian'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
Sie haben wahrscheinlich dieses unbefristete MySQL-Problem, bei dem einer der Standardbenutzer in der Benutzertabelle '' @ localhost
ist. Dies führt dazu, dass alle localhost
-Benutzer später in der Tabelle abgelehnt werden. Was ich tun würde, ist mysqldump
die mysql
-Datenbank und suche diesen Eintrag in der User
-Tabelle; Wenn es gefunden wird, löschen Sie es und leeren Sie die Berechtigungen.
Weitere Informationen finden Sie unter https://dev.mysql.com/doc/refman/5.5/en/connection-access.html .
Es ist ein weit verbreitetes Missverständnis zu glauben, dass für einen bestimmten Benutzernamen zuerst alle Zeilen verwendet werden, die diesen Benutzer explizit benennen, wenn der Server versucht, eine Übereinstimmung für die Verbindung zu finden. Das ist nicht wahr. Das obige Beispiel veranschaulicht dies, wo eine Verbindung von h1.example.net von jeffrey zuerst nicht mit der Zeile übereinstimmt, die 'jeffrey' als Wert für die Benutzerspalte enthält, sondern mit der Zeile ohne Benutzernamen. Als Folge davon wird Jeffrey als anonymer Benutzer authentifiziert, obwohl er bei der Verbindung einen Benutzernamen angegeben hat.
Dies ist ein Problem, das von anonymen Benutzern verursacht wird. Wenn ich MySQL installiert habe, laufe ich immer
Shell> mysql_secure_installation
und wählen Sie, um das Root-Passwort festzulegen/zu ändern, anonyme Benutzer zu entfernen, Remote-Root-Login zuzulassen und die Testdatenbank zu entfernen. Dadurch wird der anonyme Benutzer entfernt und Ihre Installation gesichert. Es sollte auch das Problem lösen, das Sie haben.
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Keine der hier angebotenen Lösungen funktionierte. Nach vielen Fehlern und Versuchen wurde mir klar, dass ich Sonderzeichen im Passwort hatte. Das Ändern des Passworts ohne Sonderzeichen hat das Problem behoben
Die mysql-Dokumente haben folgendes zu sagen: (Von http://dev.mysql.com/doc/refman/5.1/de/adding-users.html ):
Zwei der Konten haben den Benutzernamen
monty
und das Kennwortsome_pass
. Bei beiden Konten handelt es sich um Superuser-Konten mit allen erforderlichen Berechtigungen. Das Konto'monty'@'localhost'
kann nur verwendet werden, wenn eine Verbindung vom lokalen Host hergestellt wird. Das Konto'monty'@'%'
verwendet den Platzhalter'%'
für den Host-Teil, sodass es von jedem Host aus verwendet werden kann.Es ist notwendig, dass beide Konten für
monty
vorhanden sind, um von überall her alsmonty
eine Verbindung herstellen zu können. Ohne das Konto localhost hätte das Konto für anonyme Benutzer für localhost, das vonmysql_install_db
erstellt wird, Vorrang, wenn monty eine Verbindung von .__ herstellt. lokaler Host Als Ergebnis wirdmonty
als anonymer Benutzer behandelt. Der Grund dafür ist, dass das Konto für anonyme Benutzer einen spezifischerenHost
-Spaltenwert hat als das Konto'monty'@'%'
und daher in der Sortierreihenfolge der Benutzertabellen früher angezeigt wird.
In diesem Sinne würde ich Ihnen empfehlen, einen 'brian'@'localhost'
-Benutzer mit den gleichen Berechtigungen zu erstellen.
Sie haben die Zitate um Brian in Ihrer Erteilungserklärung vergessen. Versuchen Sie es so:
GRANT ALL PRIVILEGES ON *.* to 'brian'@'%' identified by 'password';
Ich habe gerade ein Konto erstellt, um zukünftigen Suchern eine weitere Möglichkeit zu bieten:
Für erfahrene Benutzer mag es offensichtlich sein, aber mein Passwort wurde zufällig generiert und enthielt ein "\". Es dauerte eine Weile, bis ich herausfand, dass dieser Charakter Probleme zu verursachen schien, was dazu führte, dass ich mich nicht einloggen konnte.
Ich denke, Russell Silva ist richtig ...
Ich habe einen Benutzer von erstellt
CREATE USER 'username'@'%' PASSWORD='userpassword';
Ich kann mich jedoch nicht mit diesem Konto anmelden. Das hat mir die Konsole gesagt
ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES)
Also habe ich einen Benutzer mit dem gleichen Benutzernamen erstellt, außer dass "%" in "localhost" geändert wurde, und ich konnte mich schließlich als "Benutzername" anmelden. Für mich ist das aber ziemlich seltsam.
In meinem Fall lag es daran, dass ich auf "SSL: REQUIRE SSL" (in phpmyadmin) geklickt habe. Als ich es auf "REQUIRE NONE" änderte, konnte ich mich einloggen.
Ich hatte ein ähnliches Problem beim Versuch, nach dem Upgrade auf 17.04 eine Verbindung zu einer Maria-Datenbank herzustellen, die unter Ubuntu ausgeführt wird.
Standardmäßig wurde nur Localhost (127.0.0.1) überwacht.
Damit MySQL/Maria alle verfügbaren Ports und Schnittstellen abhören kann, musste explizit bind-address = 0.0.0.0 angegeben werden. Ich habe diese Zeile am Ende der Datei /etc/mysql/my.cnf
hinzugefügt, d. H.
...
[client-server]
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
bind-address=0.0.0.0
Dann...
Sudo /etc/init.d/mysql restart
Sie können auch von einem anderen Host aus eine Verbindung herstellen und der anonyme localhost-Benutzer wird umgangen, und Sie können ihn entfernen und Berechtigungen löschen:
mysql -u brian -ppassword -h 'other_Host_than_localhost'