MySQL-Berechtigungen basieren auf der Adresse, mit der sie sich verbinden, sowie auf dem Benutzer. Also [email protected] und [email protected] verfügt über zwei separate Berechtigungen. Das Ändern von localhost auf 127.0.0.1 wie num8er erwähnt, wird wahrscheinlich funktionieren, wenn sich Ihr Code und die Datenbank auf demselben Server befinden.
Wenn Sie Terminalzugriff auf die Box haben, in der sich Ihr PHP befindet, können Sie versuchen, eine direkte Verbindung herzustellen, um alles, was mit PHP zu tun hat, auszuschließen, indem Sie Folgendes verwenden:
mysql -h 10.4.1.163 -u root -p[pass] database -e "SHOW TABLES"
Beachten Sie, dass zwischen -p
kein Leerzeichen steht und das Passwort. Bei Erfolg erhalten Sie eine Liste der Tabellen in der database
.
Um anderen Benutzern oder einem anderen Hostnamen/einer anderen IP-Adresse Zugriff zu gewähren, sollten Sie Folgendes ausführen:(obwohl Sie wirklich einen separaten Benutzer mit eingeschränkteren Berechtigungen basierend auf Ihren Anforderungen erstellen sollten).
GRANT ALL PRIVILEGES ON `database`.* TO 'root'@'10.4.1.163';
Überprüfen Sie die Dokumentation zu GRANT von MySQL hier - http://dev.mysql .com/doc/refman/5.7/en/grant.html
Nebenbei bemerkt - bitte, bitte, bitte pumpen Sie nicht einfach irgendwelche alten Daten in eine Abfrage, ohne zumindest mysql_real_escape_string
zu verwenden (http://php.net/manual/en/ function.mysql-real-escape-string.php
) darauf. Sie könnten auch in PDO (http://php. net/manual/en/book.pdo.php
), das im Allgemeinen dem inzwischen veralteten mysql_
vorgezogen wird Funktionen