
Ich versuche PHP zu lernen und richte die Datenbankverbindung ein.
Auf Mysql Workbench habe ich eine Datenbank namens php erstellt und eine Tabelle erstellt. Dann habe ich das Konto "sam"@"localhost" erstellt (ich verwende Ubuntu Desktop und es sam
ist die Ausgabe von whoami
) mit auth_socket, Granted ALL on., und wenn ich drücke ctrl+alt+T
und eingebe mysql
und drücke enter
, kann ich mich erfolgreich anmelden.
Jetzt bin ich gefolgthttps://www.php.net/manual/en/mysqli.quickstart.connections.php, und habe versucht, Socket zu verwenden, aber es ist nicht gelungen.
2021/08/13 16:54:35 [error] 1363#1363: *11 FastCGI sent in stderr: "PHP message: PHP Warning: mysqli::__construct(): (HY000/1698): Access denied for user 'sam'@'localhost' in /var/www/php/my2.php on line 3PHP message: PHP Warning: main(): Couldn't fetch mysqli in /var/www/php/my2.php on line 5" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /my2.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "localhost:803"
Und hier ist mein Code. <?php
$mysqli = new mysqli("localhost", "sam", Null, "php");
echo $mysqli->host_info . "\n";
Die Ausgabe in einem Browser ist nichts.
Dann habe ich das versucht.
<html>
<head>
<title>Connecting MySQL Server</title>
</head>
<body>
<?php
$dbhost = 'localhost';
$dbuser = 'sam';
//$dbpass = 'root@123';
$mysqli = new mysqli($dbhost, $dbuser,NULL,NULL,NULL,"/run/mysqld/mysqld.sock");
if($mysqli->connect_errno ) {
printf("Connect failed: %s<br />", $mysqli->connect_error);
exit();
}
printf('Connected successfully.<br />');
$mysqli->close();
?>
</body>
</html>
Die Ausgabe erfolgt Connect failed: Access denied for user 'sam'@'localhost'
mit Log
2021/08/13 16:59:17 [error] 1363#1363: *13 FastCGI sent in stderr: "PHP message: PHP Warning: mysqli::__construct(): (HY000/1698): Access denied for user 'sam'@'localhost' in /var/www/php/mysqli.php on line 10" while reading response header from upstream, client: 127.0.0.1, server: _, request: "GET /mysqli.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm.sock:", host: "localhost:803"
Ich habe kein Kennwort für den sam
MySQL-Benutzer.
MariaDB [mysql]> select user,password from user;
+-----------+-------------------------------------------+
| user | password |
+-----------+-------------------------------------------+
| root | |
| someone | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| someone | *9B8A3238012965AC630589D859535EA0B7C231A7 |
| someone | *AF411B6C73B3AC3A2316A309A71758175CC14FEE |
| someone | *D76A454D84260E84578F09915624F275F3D0E08B |
| sam | |
+-----------+-------------------------------------------+
6 rows in set (0.001 sec)
Ich habe den aktuellen Benutzernamen geändert, um die Privatsphäre zu schützen. Sie können sehen, dass sam
kein Passwort vorhanden ist.
Antwort1
Legen Sie mit Ihrer Mysql Workbench ein Kennwort für den Benutzer fest sam
und verwenden Sie dieses Kennwort für die Verbindung mit der mysqli-Bibliothek. Ich weiß nicht, ob Mysql Workbench eine Clickthrough-Option dafür bietet. Wenn nicht oder wenn Sie die SQL-Methode bevorzugen, verwenden Sie etwas wie:
CREATE USER 'sam'@'localhost' IDENTIFIED BY 'choose_a_safe_password'