
Estoy intentando aprender PHP y estoy configurando la conexión de la base de datos.
En Mysql Workbench, creé una base de datos llamada php y creé una tabla. Luego creé la cuenta "sam"@"localhost", (estoy usando el escritorio de Ubuntu y sam
es el resultado de whoami
) con auth_socket, concedido TODO en., y cuando presiono ctrl+alt+T
e ingreso mysql
y presiono enter
, puedo iniciar sesión exitosamente.
Ahora lo seguíhttps://www.php.net/manual/en/mysqli.quickstart.connections.php, e intenté usar socket, fallé.
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"
Y aquí está mi código. <?php
$mysqli = new mysqli("localhost", "sam", Null, "php");
echo $mysqli->host_info . "\n";
El resultado no es nada en un navegador.
Entonces probé esto.
<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>
La salida es Connect failed: Access denied for user 'sam'@'localhost'
con registro.
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"
No tengo contraseña de usuario sam
en mysql.
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)
Cambié el nombre de usuario real a alguien para proteger la privacidad. Puedes ver que sam
no tiene contraseña.
Respuesta1
Utilice su Mysql Workbench para establecer una contraseña para el usuario sam
y utilice esa contraseña para conectarse con la biblioteca mysqli. No sé si Mysql Workbench tiene una opción de clic para hacerlo, si no o si prefieres la forma SQL, usa algo como:
CREATE USER 'sam'@'localhost' IDENTIFIED BY 'choose_a_safe_password'