mysql no solicita contraseña de root cuando instala

54

Solía apt install mysql-serverinstalar MySQL en Ubuntu 16.04 pero durante la instalación, no solicitó la contraseña de root.

Después de la instalación, recibí ERROR 1045cuando intenté iniciar sesión como rooty mysql_secure_installationarrojé el mismo error. I purgeD y autoremoveD a continuación, volver a instalar pero no funciona.

¿Cómo podría solucionar esto? ¿Puedo establecer la contraseña de root si no la configuré durante la instalación?

Este es mi registro de instalación:

Se instalarán los siguientes paquetes adicionales:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Paquetes sugeridos:
  mailx tinyca
Se instalarán los siguientes paquetes NUEVOS:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 actualizado, 6 recién instalado, 0 para eliminar y 0 no actualizado.
Necesita obtener 0 B / 17,9 MB de archivos.
Después de esta operación, se utilizarán 160 MB de espacio en disco adicional.
¿Quieres continuar? [S / n] y
Preconfiguración de paquetes ...
Selección del paquete libaio1 no seleccionado previamente: amd64.
(Leyendo la base de datos ... 227144 archivos y directorios actualmente instalados).
Preparándose para desempaquetar ... / libaio1_0.3.110-2_amd64.deb ...
Desembalaje de libaio1: amd64 (0.3.110-2) ...
Seleccionando el paquete no seleccionado previamente mysql-client-core-5.7.
Preparando para descomprimir ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Desembalaje de mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Seleccionando el paquete no seleccionado previamente mysql-client-5.7.
Preparando para desempaquetar ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Desembalaje de mysql-client-5.7 (5.7.12-0ubuntu1) ...
Seleccionando el paquete no seleccionado previamente mysql-server-core-5.7.
Preparando para descomprimir ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Desembalaje de mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Seleccionando el paquete no seleccionado previamente mysql-server-5.7.
Preparando para descomprimir ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Desembalaje de mysql-server-5.7 (5.7.12-0ubuntu1) ...
Seleccionando el paquete mysql-server previamente no seleccionado.
Preparando para descomprimir ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Desembalaje del servidor mysql (5.7.12-0ubuntu1) ...
Procesando disparadores para libc-bin (2.23-0ubuntu3) ...
Procesando disparadores para man-db (2.7.5-1) ...
Procesando disparadores para systemd (229-4ubuntu4) ...
Procesadores desencadenantes de ureadahead (0.100.0-19) ...
Configuración de libaio1: amd64 (0.3.110-2) ...
Configuración de mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Configuración de mysql-client-5.7 (5.7.12-0ubuntu1) ...
Configuración de mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Configuración de mysql-server-5.7 (5.7.12-0ubuntu1) ...
alternativas de actualización: usando /etc/mysql/mysql.cnf para proporcionar /etc/mysql/my.cnf (my.cnf) en modo automático
Comprobando si se necesita una actualización.
Esta instalación de MySQL ya está actualizada a 5.7.12, use --force si aún necesita ejecutar mysql_upgrade
Configuración de mysql-server (5.7.12-0ubuntu1) ...
Procesando disparadores para libc-bin (2.23-0ubuntu3) ...
spqa
fuente

Respuestas:

61

Puede recuperar o establecer la contraseña de root sin conocer la actual iniciando mysql sin cargar las tablas de concesión.

Tenga en cuenta el $en los comandos. Esto especifica el indicador de terminal que ve al escribir el comando. Muestra que es una línea de texto, pero un comando de terminal escrito real. El mysql>prefijo " " también es un indicador. Ese es el mensaje que obtienes cuando ejecutas mysql de forma interactiva.

Este es el cli (línea de comando) para hacer esto:
(Asegúrese de detener el servidor actual antes de realizar los pasos. Solo se puede ejecutar un servidor a la vez).

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Ahora puede iniciar sesión como root sin una contraseña y ejecutar todos los comandos, como en este caso, configure la contraseña de root como root.

$ sudo mysql --user=root mysql

Esta es la contraseña de root establecida que realizará dentro de mysql si tiene MySQL 5.6 o inferior:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

En MySQL 5.7 o superior

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

A partir de ahí, salga (elimine el msqld en ejecución) mysql e inícielo normalmente.

Notas sobre cómo iniciar y detener el servicio mysql:

Deja de mysql:

$ sudo service mysql stop

Inicie mysql (normal):

$ sudo service mysql start

Mata la sesión temporal de modo seguro de mysql:

$ sudo mysqladmin shutdown
LD James
fuente
11
en mysql 5.7.12 no hay columna llamada contraseña en la tabla de usuario. Por lo tanto, el siguiente comando funcionó para mí. actualizar el conjunto de usuarios autenticación_cadena = CONTRASEÑA ('nueva contraseña') donde usuario = 'raíz';
El código
77
Todavía estoy recibiendoERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr
@ ErelSegal-Halevi Hay dos cosas que debes hacer. Ejecutar $ mysql_upgrade -u root -p. Pruebe también el comando anterior proporcionado por RP Singh.
LD James
También sigo recibiendo este error.
Jamie Hutber
SET PASSWORD FOR 'root' = PASSWORD('your-password')si está usando mariadb
user1036719
37

No solicitará la contraseña durante la instalación mysqlen Ubuntu 16.04, pero puede configurarla después de una instalación exitosa de la siguiente manera:

Después de completar la instalación de mysql, ejecute el comando:

sudo mysql_secure_installation

Mostrará:

NOTA: ¡SE RECOMIENDA EJECUTAR TODAS LAS PIEZAS DE ESTE SCRIPT PARA TODOS LOS SERVIDORES MariaDB EN USO DE PRODUCCIÓN! ¡POR FAVOR LEA CADA PASO CUIDADOSAMENTE!

Para iniciar sesión en MariaDB para asegurarlo, necesitaremos la contraseña actual para el usuario root. Si acaba de instalar MariaDB y aún no ha configurado la contraseña de root, la contraseña estará en blanco, por lo que debe presionar enter aquí.

Enter current password for root (enter for none): (aquí presione Enter)

OK, usé la contraseña con éxito, seguí adelante ...

Establecer la contraseña de root garantiza que nadie pueda iniciar sesión en el usuario raíz de MariaDB sin la autorización adecuada.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

¡Contraseña actualizada exitosamente! Recargando tablas de privilegios ... ... ¡Éxito!


Para Ubuntu 18.04 O mysql-serverversión 5.7.22, ESTE MÉTODO NO FUNCIONARÁ

Para establecer la contraseña de root en Ubuntu 18.04, primero siga los primeros tres comandos o los dos primeros pasos de la respuesta de LD James y luego ejecute,

mysql> alter user 'root'@'localhost' identified by '<password>';

¡La contraseña para el usuario root está configurada!

O

Siga estos pasos para configurar la contraseña de root en 18.04:

Como no hay una contraseña establecida para el usuario root, simplemente inicie sesión con una contraseña en blanco

sudo mysql -u root -p
Enter password: (press enter as no password is set)

después puede ejecutar fácilmente la consulta

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
margarita
fuente
2
El problema en el caso de esta pregunta es que el usuario no puede acceder a las indicaciones que le mencionan porque no conoce el current password for root.
LD James
@LDJames sí, tienes razón. No recuerdo sobre ERROR: 1405 cuando corro mysql_secure_installationpero sudo mysql_secure_installationfuncionó para mí. La instalación de mysql no solicita contraseña. A mí me pasó lo mismo. y here press entersignifica presionar enter sin contraseña.
Margarita
2
Como concede ubuntu 18.04 o debian 9+, no se conectará con una contraseña en blanco e incluso después de restablecer el pase para root, todavía se niega a conectarse
chefarov
@chefarov Enfrentando el mismo problema, intensamente frustrante
RedactedProfile
De hecho, sigo teniendo el mismo error
Jamie Hutber
17

Aparentemente, la instalación de mysql-server en 16.04 (¿o cualquier instalación 5.7?) Permite el acceso de root no a través de contraseña, sino a través del complemento auth_socket . La ejecución sudo mysql -u root(nb w / oa contraseña) le dará la consola mysql mientras que la ejecución del comando como no root le solicita una contraseña.

Parece que cambiar la contraseña no hace mucha diferencia ya que el backend de autenticación ni siquiera busca una contraseña. Hay un artículo muy completo sobre cómo cambiar el complemento y cambiar a la autenticación de contraseña .

carpa
fuente
44
Pude confirmar con una nueva instalación de apt install mysql-serversin especificar una contraseña en 18.04. El síntoma y la solución son exactamente como se describen.
EricC
Entonces, ¿cómo demonios me conecto?
Jamie Hutber
9

Después de la instalación solo:

1)

sudo mysql

(sí, sin usuario sin pase)

2. Ahora estás en la consola mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3)

FLUSH PRIVILEGES;

  1. Eso es. Ahora puede ingresar a la consola la próxima vez como de costumbre:

    mysql -u root -p my_new_pass

DimiDak
fuente
3
Intenté muchas otras respuestas, pero esta funcionó en Amazon EC2
Haris ur Rehman
2
Esta fue la respuesta correcta para WSL Ubuntu (Linux en Windows).
Fer García
2
Esta es la única respuesta que funcionó para mí en la nueva instalación de Ubuntu 18.04 en Google Cloud.
Aakash
1
Trabajó para mí en Ubuntu 19.04. Ejecuté mysql_secure_myinstallation, pero parecía que la contraseña de root no estaba establecida.
Jens Wagemaker
1
Probé docenas de soluciones. Este fue el más fácil y el único que funcionó.
mreff555
4
  1. Hay una cuenta de usuario predeterminada.

    $ vim /etc/mysql/debian.cnf 
    

    obtendrá esta cuenta de esta manera:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. inicia sesión con esta cuenta

    $ mysql -u debian-sys-maint -p
    
  3. edite su contraseña de root

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. reiniciar mysql

    $ /etc/init.d/mysql restart;
    

entonces puedes mysql -u root -pcon tu configuración anterior.

pwxcoo
fuente
Intenté con cualquier otra solución, y esta es la única que funcionó para mí. (Linux Mint 19.2).
ElectroBuddha
0

Agregando a la respuesta principal, si está atrapado en

" mysqld_safe Iniciando mysqld daemon con bases de datos desde / var / lib / mysql "

Una cosa para recordar es que debe usar otra ventana de terminal para ingresar el siguiente comando.

$ sudo mysql --user=root mysql

Si intenta hacerlo en la misma ventana, cerrará el proceso de modo seguro de mysqld.

Mohd Abdul Mujib
fuente
-1

Aquí se explica cómo configurar mysql-servercon una solicitud de contraseña de terminal en Ubuntu 18.10.

  1. Descargue The MySQL APT Repository a través de https://dev.mysql.com/downloads/repo/apt/
  2. cden su directorio donde descargó y ejecutó dpkg -i mysql-apt-config_0.8.13-1_all.deb(verifique su número de versión)
  3. En el menú de solicitud, seleccione la última opción "ok" y luego "ok" nuevamente.

  4. Actualice e instale mysql-server y mysql-client:

sudo apt update
sudo apt install mysql-server mysql-client
  1. Escriba su contraseña de root en la solicitud.
  2. Seleccione "Use Legacy Authentication Method"si sus marcos / aplicaciones en ejecución (como laravel) que aún no admiten el nuevo "Strong Password Encryption", de lo contrario, si su marco / aplicación lo admite "Strong Password Encryption", selecciónelo.
  3. Inicie sesión como root y compruebe si funciona.
ThomasAFink
fuente