Ich habe ein Problem mit mysql non root / admin user. Ich befolge die folgenden Schritte zum Erstellen des Benutzers und seiner Berechtigungen. Korrigieren Sie mich, wenn ich etwas falsch mache.
Ich installiere mysql
auf RHEL 5.7 64bit
, Pakete werden unten erwähnt, sobald ich das getan habe, was rpm install
wir sind
- Erstellen von MySQL-Datenbank mit
mysql_install_db
dann - Starten Sie dann den MySQL-Dienst
- Mit
mysql_upgrade
auch machen wir das mit dem Server.
Nach diesem Vorgang kann root
ich mich anmelden, aber mit einem Nicht-Root-Benutzer kann ich mich nicht beim Server anmelden:
[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5
[root@clustertest3 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov 30 11:09 /var/lib/mysql/mysql.sock
mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER() | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
[root@clustertest3 ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)
Dies ist das Problem, mit dem ich konfrontiert bin. Gibt es eine Lösung dafür?
mysql
mysql-error-1045
user3061726
quelle
quelle
SELECT * FROM mysql.user
Antworten:
Gewähren Sie einem Nicht-Root-Benutzer nicht alle Berechtigungen für alle Datenbanken. Dies ist nicht sicher (und Sie haben bereits "root" mit dieser Rolle).
Diese Anweisung erstellt einen neuen Benutzer und gewährt ihm ausgewählte Berechtigungen. IE:
In den Dokumenten finden Sie alle detaillierten Berechtigungen
BEARBEITEN: Mit dieser Abfrage können Sie nach weiteren Informationen suchen (melden Sie sich als "root" an):
Um zu sehen, was passiert ist
quelle
Wenn Sie über eine Remote-Maschine (Beispiel-Workbench) usw. eine Verbindung zu MySQL herstellen, führen Sie die folgenden Schritte aus, um diesen Fehler unter dem Betriebssystem zu beheben, auf dem MySQL installiert ist
Versuchen Sie, sich bei der MYSQL-Instanz anzumelden.
Dies hat bei mir funktioniert, um diesen Fehler zu beseitigen.
quelle
Versuchen:
Oder noch besser nutzen:
mysql_setpermission
um den Benutzer zu erstellenquelle
%
löst sein Problem, das für alle Hosts funktionieren sollte, es nicht. Durch Angabelocalhost
sollte es also funktionieren. Wenn das nicht funktioniert, ist etwas in MySQLEs sieht so aus, als würden Sie versuchen, einen Benutzer 'golden' @ '%' zu machen, aber ein anderer Benutzer mit dem Namen 'golden' @ 'localhost' steht im Weg / hat Vorrang.
Führen Sie diesen Befehl aus, um die Benutzer anzuzeigen:
Sie sollten zwei Einträge sehen:
1) Benutzer = golden, Host =%
2) user = golden, host = localhost
Führen Sie diese Befehle aus:
Starten Sie MySQL Workbench neu.
Führen Sie dann Ihre ursprünglichen Befehle erneut aus:
Wenn Sie dann versuchen, sich bei MySQL anzumelden, geben Sie es folgendermaßen ein:
Klicken Sie auf "Verbindung testen" und geben Sie Ihr Passwort "Passwort" ein.
quelle
Zuerst habe ich den Benutzer erstellt mit:
Nachdem ich gegoogelt und dies gesehen hatte , aktualisierte ich das Passwort des Benutzers mit:
und ich konnte mich danach verbinden.
quelle
Für alle anderen, die alle Ratschläge befolgt haben, aber das Problem weiterhin besteht.
Suchen Sie nach gespeicherten Prozeduren und zeigen Sie DEFINERS an. Diese Definierer existieren möglicherweise nicht mehr.
Mein Problem trat auf, als wir den Platzhalter-Host (%) auf IP-spezifisch änderten, um die Datenbank sicherer zu machen. Leider gibt es einige Ansichten, die immer noch 'user' @ '%' verwenden, obwohl 'user' @ '172 ....' technisch korrekt ist.
quelle
Ich habe auch das ähnliche Problem, und später fand ich es, weil ich meinen Hostnamen geändert habe (nicht
localhost
).Daher löse ich es durch Angabe der
--host=127.0.0.1
quelle
Stellen Sie sicher, dass der Benutzer einen localhost-Eintrag in der Benutzertabelle hat. Das war das Problem, das ich hatte. EX:
quelle
Je nachdem, wie Sie Ihren Benutzer erstellen, interpretiert MySQL dies anders. Wenn Sie beispielsweise einen Benutzer wie diesen erstellen:
MySQL erwartet, dass Sie mit etwas Privilegien vergeben
grant all on <your_db>.* to user01;
Vergiss es nicht
flush privileges;
Wenn Sie jedoch einen solchen Benutzer erstellen (indem Sie eine IP-Adresse übergeben), müssen Sie diese ändern in:
Um einige Privilegien zu gewähren, müssen Sie Folgendes tun:
quelle
In meinem Fall tritt der gleiche Fehler auf, weil ich versucht habe, MySQL zu verwenden, indem ich einfach "MySQL" anstelle von "MySQL -u root -p" eingegeben habe.
quelle
Verbinden Sie Ihren Server über mysqlworkbench und führen Sie diesen Befehl aus-> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';
quelle
Für nervige Suche hierher zu kommen, nachdem Sie nach dieser Fehlermeldung gesucht haben:
Das Problem für mich war, das Passwort nicht in Anführungszeichen zu setzen. z.B. Ich musste
-p'password'
statt verwenden-ppassword
quelle
Fügen Sie einfach den Computernamen anstelle von 'localhost' in den Hostnamen oder die MySQL-Hostadresse ein.
quelle