yes usuario sqlstate solucion password para mysqli_real_connect hy000 for error documentación dicho denegado acceso php mysql login root

php - usuario - sqlstate[hy000][1698] access denied for user ''root''@''localhost''



SQLSTATE[HY000][1698] Acceso denegado para el usuario ''root'' @ ''localhost''. Intenté todo (6)

Acabo de instalar Ubuntu 16.04 e instalé un servidor web en él. Todo funciona bien, pero no puedo acceder a la base de datos. Intenté todo en Internet, también aquí, pero nada funciona ... incluso si creo un nuevo usuario y otorgo todos los privilegios, no puedo crear la base de datos :( En PHP obtengo este error:

SQLSTATE[HY000] [1698] Access denied for user ''root''@''localhost''

Cuando intento iniciar sesión en el terminal, funciona, pero en PHP y phpmyadmin no. Por favor ayuda.

Código PHP:

protected $host = ''127.0.0.1''; protected $db = ''dbname''; protected $name = ''root''; protected $pass = ''root''; protected $conn; private static $settings = array( PDO::MYSQL_ATTR_INIT_COMMAND => ''SET NAMES utf8'' ); public function __construct() { try { $this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->name, $this->pass, self::$settings); } catch (PDOException $e) { echo $e->getMessage(); } }


Con mysql Ver 14.14 Distrib 5.7.22, la declaración de actualización es ahora:

update user set authentication_string=password(''1111'') where user=''root'';


Estos pasos me funcionaron en varios sistemas con Ubuntu 16.04, Apache 2.4, MariaDB, PDO

  1. iniciar sesión en MYSQL como root

    mysql -u root

  2. Otorgar privilegios. Para un nuevo usuario ejecute:

    CREATE USER ''newuser''@''localhost'' IDENTIFIED BY ''password''; GRANT ALL PRIVILEGES ON *.* TO ''newuser''@''localhost''; FLUSH PRIVILEGES;

  3. enlazar a todas las direcciones:

    La forma más fácil es comentar la línea en su archivo /etc/mysql/mariadb.conf.d/50-server.cnf o /etc/mysql/mysql.conf.d/mysqld.cnf, dependiendo de qué sistema esté corriendo:

    #bind-address = 127.0.0.1

  4. salga de mysql y reinicie mysql

    exit service mysql restart

Por defecto, solo se enlaza con localhost, pero si comenta la línea, se enlaza con todas las interfaces que encuentra. Comentar la línea es equivalente a bind-address = *.

Para verificar el enlace del servicio mysql, ejecútelo como root:

netstat -tupan | grep mysql


Los usuarios para mysql y para el servidor son 2 cosas diferentes, vea cómo agregar usuarios a la base de datos e inicie sesión con estas credenciales


MySQL hace una diferencia entre "localhost" y "127.0.0.1".

Podría ser posible que ''root'' @ ''localhost'' no esté permitido porque hay una entrada en la tabla de usuarios que solo permitirá el inicio de sesión root desde 127.0.0.1.

Esto también podría explicar por qué algunas aplicaciones en su servidor pueden conectarse a la base de datos y otras no porque haya diferentes maneras de conectarse a la base de datos. Y actualmente no lo permites a través de "localhost".


Resulta que ya no se puede usar el usuario root en 5.7 sin convertirse en un sudoer. Eso significa que ya no puede ejecutar mysql -u root y, en su lugar, debe ejecutar sudo mysql -u root .

Eso también significa que ya no funcionará si está utilizando el usuario root en una GUI (o supuestamente en cualquier aplicación de línea de comandos). Para que funcione, deberá crear un nuevo usuario con los privilegios necesarios y usarlo en su lugar.

Ver this respuesta para más detalles.


Tal vez un poco tarde, pero encontré esta respuesta mirando por internet. Podría ayudar a otros con el mismo problema.

$sudo mysql -u root [mysql] use mysql; [mysql] update user set plugin='''' where User=''root''; [mysql] flush privileges; [mysql] /q

Ahora debería poder iniciar sesión como root en phpmyadmin.

(Encontrado here .)