Ich habe eine RDS-Datenbankinstanz mit einer Sicherheitsgruppe eingerichtet, in der ich meine EC2 Elastic IP als mein CIDR / IP verwende. Ich habe auch die Sicherheitsgruppe mit meinem EC2 verbunden.
Meine Sicherheitsgruppe auf der EC2-Instanz sieht so aus. Ich habe einen der 3306 Ports mit meiner Elastic IP verbunden.
Ich habe eine Datenbank und eine Tabelle in phpMyAdmin erstellt und versuche es zu testen, indem ich alle Werte mit dem folgenden Code ausdrucke:
%Vor% Der Fehler, den ich bekomme, ist Unknown database 'XXXX'
. Irgendwelche Ideen?
BEARBEITEN 1
Ich habe gerade alle mysqli
-Anweisungen in mysql
geändert. Die Verbindung ist jedoch immer noch nicht erfolgreich, d. H. Die Datenbank kann nicht gefunden werden.
BEARBEITEN 2
Hier ist ein Screenshot meiner mysql-Privilegien.
Unbekannte Datenbank 'XXXX' bedeutet, dass auf die Datenbank nicht zugegriffen werden konnte. Dies könnte passieren, weil:
Der Server verbindet sich erfolgreich, aber die Datenbank existiert nicht. Versuchen Sie, eine Verbindung herzustellen, ohne den Datenbanknamen als Parameter anzugeben. Führen Sie anschließend die Abfrage show databases;
aus. Dort werden alle Datenbanken angezeigt.
Sie stellen eine Verbindung zum falschen Server her (Sie haben die Datenbank an einer anderen Stelle hinzugefügt, wo die Datenbank auf einem anderen Server existiert). Wenn Sie die vorhandenen Datenbanken überprüfen, können Sie feststellen, um welchen Server es sich handelt.
Es scheint, dass Sie eine Verbindung zum Amazon RDS-Server herstellen können. Aber Datenbank ist nicht da. Ein ähnlicher Fehler würde sich zeigen, wenn wir versuchen, eine Verbindung zur Neuinstallation von MySQL herzustellen. Es hat keine Datenbanken (außer information_schema
und mysql
).
Zunächst sollten Sie die mysql_ * Erweiterung und ihre Funktion nicht (nie) verwenden. Sie sind veraltet, veraltet und werden in einer Near-Version aus PHP entfernt. Verwenden Sie mysqli_ oder PDO . Siehe die große rote Warnung oben auf der Seite mysql_connect in den PHP-Dokumenten für mehr Info.
Stellen Sie eine Verbindung mit Ihrem Webserver in ssh her und verwenden Sie den lokalen mysql-Client, um eine Verbindung zum Datenbankserver als root herzustellen (Sie werden nach dem Passwort für den Benutzer root gefragt):
%Vor%Wenn das funktioniert, sollten Sie am mysql-Prompt landen. Wenn dies nicht funktioniert, liegt Ihr Problem in Ihrer Netzwerkkonfiguration, Ihr Webserver kann keine Verbindung zum mysql-Server herstellen (überprüfen Sie die Port-Öffnungen).
Stellen Sie sicher, dass die fragliche Datenbank auf dem Server existiert
%Vor%Wenn Sie Ihren Datenbanknamen nicht in der Liste sehen können, bedeutet dies, dass der Server, den Sie in phpmyadmin sehen, nicht der richtige ist; Überprüfe deine phpmyadmin Einstellungen.
Überprüfen Sie, ob Sie mit diesem Benutzer eine Verbindung mit dem Client cli mysql herstellen können. Beachten Sie, dass ich keine Datenbank in der Verbindungslinie angeben.
%Vor%Wenn dies fehlschlägt und Sie keine Eingabeaufforderung erhalten, kann dies entweder daran liegen, dass die Berechtigung nicht vorhanden ist, oder weil dieser Benutzer keine Verbindung zu dem von Ihnen angegebenen Host herstellen kann. Sehen Sie sich die Fehlermeldung an, die mysql anzeigt. etwas wie!
%Vor%Was ist in der HOST ist wichtig, und Sie müssen sicherstellen, dass es in Ihren Privilegien erlaubt ist. Wenn alles in Ordnung scheint und es immer noch nicht funktioniert, versuchen Sie, die Berechtigungen für diesen Benutzer zu bearbeiten und setzen Sie den HOST auf '%' (bedeutet, dass alles erlaubt ist). Wenn es damit funktioniert, bedeutet das, dass der HOST falsch in mysqls Rechten konfiguriert ist.
Überprüfen Sie, ob der Benutzer die betreffende Datenbank sehen kann. Wenn Sie eine Verbindung mit einem bestimmten Benutzer herstellen, zeigt "show databases" nur Datenbanken an, für die dieser Benutzer Berechtigungen hat.
%Vor%Wenn Sie Ihre Datenbank nicht in der Liste sehen können, bedeutet dies, dass die Berechtigungen für den Benutzer für diese Datenbank falsch / nicht gesetzt sind.
Wenn alle Schritte hier gut funktionieren, bedeutet das wahrscheinlich, dass Sie einen Fehler in Ihrem PHP-Code haben, überprüfen Sie den Host, das Passwort, den Benutzernamen, ...
Wenn Sie wirklich nicht herausfinden können, welche Teile der Berechtigungen falsch sind, versuchen Sie, einen Dummy-Benutzer zu erstellen, der alle Berechtigungen von jedem Host hat:
%Vor% Sobald Sie diesen Benutzer erstellt haben und sich mit ihm verbinden können, versuchen Sie, sich mit Ihrem PHP-Code zu verbinden. Sobald dies erledigt ist, löschen Sie den Benutzer (mit DROP USER 'testuser'
), erstellen Sie ihn erneut mit einer eingeschränkteren HOST-Berechtigung und versuchen Sie es erneut, bis Sie die gewünschten Berechtigungen repliziert haben.
Denken Sie daran, diesen Benutzer zu löschen, und Sie sind fertig.
Einführung
Der Fehler Unknown database 'XXXX'
bedeutet die Datenbank does not exist
und hat nichts mit Ihren mysql-Privilegien zu tun.
phpMyAdmin auf RDS
Wenn Sie Ihre Datenbank über phpMyAdmin
erstellt haben, sind Sie sicher, dass sie so konfiguriert wurde, dass sie sich mit remote Amazon RDS instance
verbindet, oder Sie arbeiten nur an Ihrem localhost
Bitte überprüfen Sie Ihre config.inc.php
, um sicherzustellen, dass sie richtig konfiguriert ist. Sie können Ihren Remote-Server hinzufügen, indem Sie
Bessere DB-Verwaltung
Sie können auch die MySQL-Workbench verwenden, mit der Sie nicht nur Ihre Datenbank erstellen und verwalten können, sondern auch Überwachen Sie auch Echtzeit. Sie können direkt verbinden oder SSH verwenden
Endlich
Ich habe gerade alle mysqli-Anweisungen in mysql geändert. Aber die Verbindung ist immer noch nicht erfolgreich, d. H. Die Datenbank kann nicht gefunden werden.
Es gibt keinen Grund, weshalb Sie mysqli
zu mysql
ändern sollten, weil offiziell bei 5.5 veraltet ist. 0
Sie müssen mysqli_ oder mysql_ verwenden, vorzugsweise die erste. Es wird nicht funktionieren, sie auszutauschen.
Wenn Sie einen unbekannten Datenbankfehler erhalten, ist Ihre Verbindung erfolgreich, Sie versuchen, eine Datenbank auszuwählen, die entweder nicht existiert, oder der Benutzer hat keine Zugriffsrechte.
Tags und Links php mysql database amazon-ec2 rds