yes - error 1045 mysql 28000 access denied for user root '@' localhost ubuntu



ERROR 1698(28000): acceso denegado para el usuario 'root' @ 'localhost' (8)

Algunos sistemas como Ubuntu, mysql está usando por defecto el complemento UNIX auth_socket .

Básicamente significa que: db_users usándolo, será "auth" por las credenciales de usuario del sistema. Puede ver si su usuario root está configurado de esta manera haciendo lo siguiente:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

Como puede ver en la consulta, el usuario root está utilizando el complemento auth_socket

Hay 2 formas de resolver esto:

  1. Puede configurar el usuario root para que use el complemento mysql_native_password
  2. Puede crear un nuevo db_user con su system_user (recomendado)

Opción 1:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

Opción 2: (reemplace YOUR_SYSTEM_USER con el nombre de usuario que tiene)

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

Recuerde que si usa la opción # 2, deberá conectarse a mysql como su nombre de usuario del sistema ( mysql -u YOUR_SYSTEM_USER )

Nota: En algunos sistemas (por ejemplo, Debian stretch), el complemento 'auth_socket' se llama 'unix_socket' , por lo que el comando SQL correspondiente debería ser: UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

Actualización: según el comentario de @ andy parece que mysql 8.xx actualizó / reemplazó el auth_socket para caching_sha2_password No tengo una configuración del sistema con mysql 8.xx para probar esto, sin embargo, los pasos anteriores deberían ayudarlo a comprender el problema. Aquí está la respuesta:

Un cambio a partir de MySQL 8.0.4 es que el nuevo complemento de autenticación predeterminado es 'caching_sha2_password'. El nuevo 'YOUR_SYSTEM_USER' tendrá este complemento de autenticación y ahora puede iniciar sesión desde el shell bash con "mysql -u YOUR_SYSTEM_USER -p" y proporcionar la contraseña para este usuario en el mensaje. No es necesario el paso "UPDATE user SET plugin". Para ver la actualización predeterminada del complemento de autenticación 8.0.4, consulte https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/

https://ffff65535.com

Entonces ... estoy configurando un nuevo servidor y sigo teniendo este problema.

Cuando intento iniciar sesión en la base de datos MySQL con el usuario root, aparece el error "ERROR 1698 (28000): acceso denegado para el usuario 'root' @ 'localhost'".

No importa si me conecto a través del terminal (SSH), a través de PHPMyAdmin o un cliente MySQL, por ejemplo, Navicat. Todos fallan.

Miré en la tabla mysql.user y obtuve lo siguiente:

+------------------+-------------------+
| user             | host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

Como puede ver, la raíz debe tener acceso.

El servidor es bastante simple, ya que he tratado de solucionar esto por un tiempo ...

Está ejecutando Ubuntu 16.04.1 LTS con Apache, MySQL y PHP, para que pueda alojar sitios web, e iRedMail 0.9.5-1, para que pueda alojar correo.

Iniciar sesión en la base de datos MySQL funciona bien antes de instalar iRedMail. También intenté, simplemente instalando iRedMail, pero luego root, tampoco funciona ...

Si alguien pudiera decirme cómo soluciono mi problema de inicio de sesión de MySQL o cómo instalo iRedMail, además de una instalación de MySQL existente. Y sí, probé los Consejos de instalación y no puedo encontrar esas variables en los archivos de configuración.

Cualquier ayuda es muy apreciada :)


Desea acceder a MySQL con el usuario root, pero no proporciona la contraseña correcta de root.

Si necesita establecer una nueva contraseña para root , el sitio de MySQL tiene una excelente documentación sobre cómo hacerlo: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

No mostraré el proceso aquí porque la documentación de MySql en el enlace anterior es clara y concisa .


Esto ha sucedido a mí también. El problema es con el repositorio mysql que ya viene con la distribución de Linux. Entonces, cuando simplemente hace: $ sudo apt install mysql-server , instala mysql desde su repositorio predeterminado, lo que da este problema. Entonces, para superar eso, debe desinstalar el mysql $ sudo apt remove mysql* --purge --auto-remove

Luego descargue mysql repo desde el sitio web oficial de mysql MySQL APT Repo Siga su documentación sobre cómo agregar repo e instalarlo. Esto no da problema. Además, como respondió @zetacu, puede verificar que la raíz de mysql ahora realmente use el complemento mysql_native_password


Primer paso: vaya a /etc/phpmyadmin/config.inc.php luego descomente las líneas donde encuentre AllowNoPassword. Segundo paso: inicie sesión en su cuenta predeterminada de MySQL

mysql -u root -p
use mysql;
update user set plugin="" where user='root';
flush privilege;

¡y eso es todo!


También enfrenté el mismo problema la primera vez.

Ahora está arreglado:

Primero, copie el archivo /etc/mysql/mysql.conf.d/mysqld.cnf y /etc/mysql/my.cnf en /etc/mysql/my.cnf .

Puedes hacerlo por comando:

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

Ahora vamos a descansar la contraseña:

Use los siguientes comandos en su terminal:

sudo service mysql stop 
sudo service mysql start
sudo mysql -u root

Ahora estás dentro de la consola mysql.

Luego, escriba algunas consultas para restablecer nuestra contraseña de root

USE mysql
update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit

Ahora podemos limpiar /etc/mysql/my.cng

Abra el archivo anterior en su editor y elimine todas las líneas dentro del archivo.

Después de eso, reiniciemos mysql:

sudo mysql service restart 

Ahora usemos mysql con la contraseña recién creada:

sudo mysql -u root -p

Finalmente ingrese su contraseña recién creada.


os: Ubuntu18.04

mysql: 5.7

  1. agregue las skip-grant-tables al final del archivo de mysqld.cnf

  2. cp el my.cnf

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
  1. restablecer la contraseña
(base)   ~ sudo service mysql stop 
(base)   ~ sudo service mysql start
(base)   ~ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed, 3 warnings
mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> update user set plugin="mysql_native_password"; 
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4  Changed: 0  Warnings: 0

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
  1. eliminar las skip-grant-tables de omisión de concesión de my.cnf
(base)   ~ sudo emacs /etc/mysql/mysql.conf.d/mysqld.cnf 
(base)   ~ sudo emacs /etc/mysql/my.cnf                 
(base)   ~ sudo service mysql restart
  1. abre el mysql
(base)   ~ mysql -uroot -ppassword 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  1. verifique la política de contraseña
mysql> select @@validate_password_policy;
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.00 sec)


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.08 sec)!
  1. cambiar la configuración de validate_password
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.05 sec)

mysql> set global validate_password_mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
6 rows in set (0.00 sec)

Tenga en cuenta que debe saber que error causado por qué? validate_password_policy?

debe decidir restablecer su contraseña para completar la política o cambiarla.


That funcionó para mí:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Chequea aquí:

La NUEVA versión de MYSQL lo hace de esta manera.

En el nuevo my-sql, si la contraseña se deja vacía durante la instalación, se basa en el complemento auth_socket .

La forma correcta es iniciar sesión en my-sql con el privilegio sudo .

$ sudo mysql -u root -p

Y luego actualizando la contraseña usando:

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

Una vez hecho esto, stop and start el servidor mysql.

$  sudo service mysql stop
$  sudo service mysql start

Para obtener detalles completos, puede consultar percona.com/blog/2016/03/16/… .

Comenta para cualquier duda.





iredmail