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 existente de MySQL. Y sí, probé los Consejos de instalación y no puedo encontrar esas variables en los archivos de configuración.
sudo mysql_secure_installation
es la forma más fácil de arreglar esoRespuestas:
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
root
usuario está configurado de esta manera haciendo lo siguiente:Como puede ver en la consulta, el
root
usuario está usando elauth_socket
complementoHay 2 formas de resolver esto:
mysql_native_password
complementodb_user
contigosystem_user
(recomendado)Opción 1:
Opcion 2: (reemplace YOUR_SYSTEM_USER con el nombre de usuario que tiene)
Recuerde que si usa la opción # 2, tendrá que 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: del comentario de @ andy parece que mysql 8.xx actualizó / reemplazó el
auth_socket
porquecaching_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/
fuente
sudo gedit /etc/phpmyadmin/config.inc.php
. Luego hice una búsquedaAllowNoPassword
y descomenté ambas líneas que lo contenían. Luego pude iniciar sesión como root sin contraseña.IDENTIFIED BY ''
bit probablemente debería serIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
, etc., y no ha estado funcionando.sudo mysql -u root -p
no me deja entrar?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
auth_socket
complemento.La forma correcta es iniciar sesión en my-sql con
sudo
privilegio.Y luego actualizando la contraseña usando:
Una vez hecho esto,
stop and start
el servidor mysql.Para obtener detalles completos, puede consultar este enlace .
Comenta para cualquier duda.
fuente
Estaba teniendo este problema en una máquina virtual Debian 8 con la que estaba interactuando a través de Putty en mi escritorio de Windows 10.
Intenté varias sugerencias aquí, pero nada funcionó y estoy ejecutando MariaDB en el host de Debian. Al final descubrí que no podía iniciar el servidor db en modo seguro, pero no era necesario y los siguientes comandos realmente funcionaron para mí, es decir, permitir que un usuario de MySql recién creado inicie sesión en el servidor MySql / MariaDB:
Si lo anterior no funciona para usted, siga los pasos descritos en la publicación anterior de zetacu ( zetacu ) y luego siga mis pasos.
Ahora debería poder usar un cliente de terminal remoto e iniciar sesión de forma segura en mysql con el comando:
* escriba la contraseña cuando se le solicite
fuente
Sugeriría eliminar la conexión Mysql -
ACTUALIZACIÓN: esto es para Mysql versión 5.5, si su versión es diferente, cambie la primera línea en consecuencia
E instalar de nuevo pero esta vez establezca una contraseña de root usted mismo. Esto ahorrará mucho esfuerzo.
fuente
Después de horas de lucha sin solución aquí, esto funcionó para mí, luego encontré un video de YouTube donde dice que la columna de contraseña ahora se llama autenticación_cadena. Así que pude cambiar mi contraseña de la siguiente manera: Primero ingrese a mysql desde la terminal
luego dentro de mysql escribe lo que sea después de mysql>
en este punto ya no tienes mysql en tu terminal normal. Debe reiniciar mysql para que esto surta efecto. para ese tipo lo siguiente:
Consulte este enlace de video para una mejor comprensión
fuente
paso 1.
sudo mysql -u root -p
paso 2.
USE mysql;
paso 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Aquí 'admin' es su nueva contraseña, puede cambiarla.
paso 4.
exit
Gracias. Estás listo.
fuente
No hay necesidad de sudo
La base de datos se inicializa con 2 cuentas con todos los privilegios: la primera es "root", que es inaccesible y la segunda con su nombre de usuario (consulte con el comando
whoami
).Para habilitar el acceso a la cuenta raíz, debe iniciar sesión con su nombre de usuario
y cambiar manualmente la contraseña para root
Inicie sesión como 'root'
fuente
Primer paso: vaya a /etc/phpmyadmin/config.inc.php y luego descomente las líneas donde encuentre AllowNoPassword. Segundo paso: inicie sesión en su cuenta predeterminada de MySQL
¡y eso es todo!
fuente
Eso funcionó para mí:
fuente
También enfrenté el mismo problema la primera vez.
Ahora está arreglado:
Primero, copie el
/etc/mysql/mysql.conf.d/mysqld.cnf
archivo y péguelo en/etc/mysql/my.cnf
.Puedes hacerlo por comando:
Ahora vamos a descansar la contraseña:
Use los siguientes comandos en su terminal:
Ahora estás dentro de la consola mysql.
Luego, escriba algunas consultas para restablecer nuestra contraseña de root
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:
Ahora usemos mysql con la contraseña recién creada:
Finalmente ingrese su contraseña recién creada.
fuente
Encontré mi solución después de horas de investigación aquí.
Detener MySQL
Hacer el directorio de servicios MySQL.
Otorgue permiso al usuario de MySQL para escribir en el directorio de servicios.
Inicie MySQL manualmente, sin verificaciones de permisos o redes.
Inicia sesión sin contraseña.
Actualiza contraseña
Apaga MySQL.
Inicie el servicio MySQL normalmente.
fuente
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 .
fuente
os: Ubuntu18.04
mysql: 5.7
agregue el
skip-grant-tables
al final del archivo de mysqld.cnfcp el my.cnf
skip-grant-tables
de my.cnfvalidate_password
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.
fuente
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 lo haces:
$ sudo apt install mysql-server
instala mysql desde su repositorio predeterminado, lo que da este problema. Entonces, para superar eso, debes desinstalar el mysql instalado$ 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
fuente
en mi caso,
Estoy seguro de que mi contraseña era correcta; de lo contrario, el código de error sería
ERROR 1045 (28000): Access denied for user
entonces vuelvo a iniciar sesión usando sudo,
Esta vez funcionó para mí. ver los documentos
y luego cambia la contraseña de root,
luego reinicie el servidor usando
sudo /etc/init.d/mysql restart
fuente