new - php mysqli_connect: método de autenticación desconocido para el cliente
new mysqli php example (6)
Estoy usando php
mysqli_connect
para iniciar sesión en una base de datos MySQL (todo en localhost)
<?php
//DEFINE (''DB_USER'', ''user2'');
//DEFINE (''DB_PASSWORD'', ''pass2'');
DEFINE (''DB_USER'', ''user1'');
DEFINE (''DB_PASSWORD'', ''pass1'');
DEFINE (''DB_HOST'', ''127.0.0.1'');
DEFINE (''DB_NAME'', ''dbname'');
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if(!$dbc){
die(''error connecting to database'');
}
?>
MySQL Server ini File:
[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
#default_authentication_plugin=mysql_native_password
con
caching_sha2_password
en el archivo ini del servidor MySQL, no es posible iniciar sesión con user1 o user2;
error: mysqli_connect (): el servidor solicitó un método de autenticación desconocido para el cliente [caching_sha2_password] en ...
con
mysql_native_password
en el archivo ini del servidor MySQL, es posible iniciar sesión con user1, pero con user2, el mismo error;
¿Cómo puedo iniciar sesión usando
caching_sha2_password
en el servidor mySql?
Actualmente, la extensión php mysqli no admite la nueva función de autenticación caching_sha2. Tienes que esperar hasta que se lance una actualización.
Consulte la publicación relacionada de los desarrolladores de mysql: https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/
No mencionaron PDO, tal vez debería intentar conectarse con PDO.
Ejecuté el siguiente comando
ALTER USER ''root'' @ ''localhost'' identified with mysql_native_password BY ''root123'';
en la línea de comandos y finalmente reinicie MySQL en los servicios locales.
Funciona para mí (PHP 5.6 + PDO / MySQL Server 8.0 / Windows 7 64bits)
Edite el archivo
C:/ProgramData/MySQL/MySQL Server 8.0/my.ini
:
default_authentication_plugin=mysql_native_password
Restablecer el servicio MySQL en Windows, y en el shell MySQL ...
ALTER USER my_user@''%'' IDENTIFIED WITH mysql_native_password BY ''password'';
Resuelvo esto por comando SQL:
ALTER USER ''mysqlUsername''@''localhost'' IDENTIFIED WITH mysql_native_password BY ''mysqlUsernamePassword'';
que hace referencia en https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
si estas creando nuevo usuario
CREATE USER ''jeffrey''@''localhost'' IDENTIFIED WITH mysql_native_password BY ''password'';
que hace referencia en https://dev.mysql.com/doc/refman/8.0/en/create-user.html
esto funciona para mi
Si estás en Windows y no es posible usar
caching_sha2_password
, puedes hacer lo siguiente:
- ejecute el instalador de MySQL
- seleccione "Reconfigurar" al lado de MySQL Server (el elemento superior)
- haga clic en "Siguiente" hasta que llegue a "Método de autenticación"
- cambie "Use Strong Password Encryption para la autenticación (RECOMENDADO)" a "Use el método de autenticación heredado (conserve la compatibilidad con MySQL 5.X)
- haga clic en Siguiente"
- ingrese su contraseña de cuenta raíz en Cuentas y roles, y haga clic en "Verificar"
- haga clic en Siguiente"
- siga haciendo clic en "Siguiente" hasta que llegue a "Aplicar configuración"
- haga clic en "Ejecutar"
El instalador hará todos los cambios de configuración necesarios para usted.
ALTER USER ''mysqlUsername''@''localhost'' IDENTIFIED WITH mysql_native_password BY ''mysqlUsernamePassword'';
Eliminar comillas ('') después de
ALTER USER
y mantener comillas ('') después de
mysql_native_password BY
Está trabajando para mí también.