Contraseña de root de macOSX homebrew mysql


116

Por alguna razón, MySQL dejó de dar acceso a root. Desinstalado y reinstalado con Homebrew. Instalación nueva, tablas nuevas pero cuando entro

mysql -u root -p

Me sale este error:

Acceso denegado para el usuario 'root' @ 'localhost' (usando contraseña: NO)

Reinstalé MySQL cinco veces, pero todavía me pide una contraseña. ¿Cómo puedo solucionar esto?


Hay una pregunta casi exacta en superusuario. Siga estos pasos: superuser.com/a/400345
Icarus

13
Simplemente corra mysql_secure_installationy responda las preguntas formuladas, simple
Abhinav Singh

8
El comando mysql_secure_installation solicita una contraseña de root; si lo ha configurado y olvidado, este procedimiento no ayudará.
JohnG

1
Si brew instaló MySQL 5.7, siga estos pasos: stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u roottrabajó aquí ...
rogerdpack

Respuestas:


115

Simplemente ejecute este comando (donde NEWPASSestá su contraseña):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

Tuve el mismo error y lo solucioné de esta manera.


16
Trabajó para mi. Obviamente (quizás), el signo de dólar ($) debe ingresarse como parte del comando (no es solo una línea de comandos).
placas de cocción el

3
Recomendaría no incluir NEWPASS en el comando para evitar almacenarlo en el archivo de historial de su shell. Ese comando solicitará automáticamente una entrada si lo ejecuta sin el pase, por lo que no hay razón para hacerlo. :)
Levi Figueira

4
si usa mariadb:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams

8
No funciona para mí, con mariadb (incluso con la nota @bryceadams): / usr / local / opt / mariadb / bin / mysqladmin: conectarse al servidor en 'localhost' error fallido: 'Acceso denegado para el usuario' root '@' localhost ' '
trainoasis

3
para mariadb, si se le niega el acceso al usuario:sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
actualizado el

110

Ninguno de estos funcionó para mí. Creo que ya tenía mysql en algún lugar de mi computadora, por lo que se estableció una contraseña allí o algo así. Después de pasar horas probando todas las soluciones, esto es lo que funcionó para mí:

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot

todo el crédito a @Ghrua


6
las publicaciones anteriores no me funcionaron, pero esta, aunque destructiva, funcionó muy bien.
Clay

1
cuando finalmente inicie sesión en mysql, use ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';para establecer su nueva contraseña de root.
Martin Braun

Esto funcionó para mí sin eliminar mi base de datos existente
Mwirabua Tim

Finalmente una solución de trabajo adecuada. @ 2020 MacOs catalina.
Mindaugas Kurlys

Esto funcionó para mí cuando la solución anterior no lo hizo. ¡Gracias!
Les Brown

65

En caso de que haya configurado y olvidado inadvertidamente la contraseña de root, y no quiera borrar todas sus bases de datos y comenzar de nuevo porque es perezoso y olvidó tener una solución de respaldo en su lugar, y está utilizando una instalación de Homebrew bastante reciente (Invierno de 2013), aquí hay pasos para restablecer su contraseña para MySQL.

Detenga la instancia de MySQL que se está ejecutando actualmente

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Ahora inicie mysql omitiendo manualmente las tablas de concesión y la creación de redes

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

Tenga en cuenta que si cuando ejecuta echo $ (brew --prefix mysql) y no responde como "/ usr / local / opt / mysql" en bash, deberá ajustar la ruta en consecuencia.

Una vez que haya hecho esto, ahora debería tener una instancia de MySQL sin protección en ejecución.

Inicie sesión y establezca la contraseña

mysql -u root

Cuando se le solicite, ingrese el siguiente comando de MySQL para establecer una nueva contraseña para el usuario afectado.

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

Si todo salió según lo planeado, debería decir:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

Salga del indicador de MySQL.

mysql> exit
Bye

Detener servidor:

mysqladmin -u root shutdown

Ahora, volvamos a poner el demonio de lanzamiento para que tengamos nuestro MySQL listo nuevamente:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Felicidades. Acaba de restablecer su contraseña de root de mysql. ¡Sírvase un café y obtenga una solución de respaldo!


5
Para detener el servidor MySQL desprotegido después de cambiar la contraseña:mysqladmin -u root shutdown
Vebjorn Ljosa

9
Me encontré con este problema y encontré que esta respuesta es la más cercana. Me di cuenta de que passwordno era una columna válida en mysql 5.7.9. En su lugar, tuve que usar authentication_stringen su lugar. El resto de las instrucciones funcionaron perfectamente. ¡Gracias!
M. Scott Ford

5
Como dijo M. Scott Ford, el comando adecuado es:update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
Tuve que correr update mysql.user set authentication_string=password('none') where user='root';para que funcionara. (Al igual que el comentario justo encima de mí, pero anteponer mysql.a user.)
Steve Meisner

2
La función de contraseña se elimina desde mysql 8.0.11. detalles más
chancyWu

62

Tuve el mismo problema hace un par de días. Ocurre cuando instala a mysqltravés homebrewy ejecuta el script de inicialización ( mysql_install_db) antes de iniciar el mysqldemonio.

Para solucionarlo, puede eliminar mysqlarchivos de datos, reiniciar el servicio y luego ejecutar el script de inicialización:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

funcionó perfectamente para mí. En realidad, no quiero establecer una contraseña para mi máquina local, por lo que las otras soluciones no son realmente lo que estoy buscando
Brad

3
mysql_install_db está obsoleto, considere usarmysqld --initialize
Brian

1
Lo entiendo No such file or directorycuando ejecuto ese primer comando.
Agente Zebra

1
después de ejecutar el comando mysqld --initialize, notará en el mensaje de registro en la consola que estableció una contraseña temporal para el usuario root ... cópielo y use la contraseña para la próxima vez que dispare el comando "mysql -uroot -p" - Definitivamente funcionará. . y luego mysql le pedirá que restablezca la contraseña .. consulte esto dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde "Definitivamente funcionará" - declaración muy ambiciosa. Intenté esto, usé la contraseña temporal que me dio, pero aún así no me otorgó acceso. ¿Tuviste que escapar de la puntuación con una barra invertida?
Max Goodridge

47

Recibí este error después de instalar mysql a través de home brew.

Así que primero elimine la instalación. Luego reinstalar a través de Homebrew

brew update
brew doctor
brew install mysql

Luego reinicia el servicio mysql

 mysql.server restart

Luego ejecute este comando para establecer su nueva contraseña de root.

 mysql_secure_installation

Finalmente pedirá recargar los privilegios. Decir que sí. Luego inicie sesión en mysql nuevamente. Y use la nueva contraseña que ha establecido.

mysql -u root -p

1
Esta es la solución perfecta. Ya había intentado correr, mysql_secure_installationpero la parte clave fue elmysql.server restart
Johan

mysql_secure_installation fue la pieza clave
Nik

Para evitar el dolor de cabeza ... simplemente escriba use el comando de reinicio como dice nirojan, luego ejecute mysql_secure_installation
Dan Zuzevich

13

Si tu corres

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

también falla el inicio de sesión con la cuenta root:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

luego se crea el usuario administrador predeterminado con el mismo nombre que el nombre de usuario de su cuenta de MacOS , por ejemplo, johnsmit .

Para iniciar sesión como root, emita:

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> exit
Bye

El nombre de la cuenta de MacOS lo hizo por mí.
Dan

¿Puedo agregar una contraseña para el usuario del nombre de cuenta de macos?
OrigamiEye


4

Acabo de notar algo común a la mayoría de las respuestas aquí y lo he confirmado en mi nueva instalación. En realidad, es obvio si observa las recomendaciones para ejecutar mysqladmin -u rootsin él -p.

No hay contraseña.

Brew configura mysql con solo un usuario root y sin contraseña. Esto tiene sentido, supongo, pero las advertencias posteriores a la instalación no lo mencionan en absoluto.


2
Tuve el problema de acceso denegado asumiendo que no había contraseña de root, por lo que no creo que el problema sea obvio.
Jack Frost

No estoy diciendo que el problema sea obvio; para cualquiera que haya usado MySQL en circunstancias normales, es completamente confuso. Pero mirando las otras respuestas, la razón es clara.
Spyder

3

Intente sudoevitar el error "Acceso denegado":

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


3

Dado que la pregunta se hizo / respondió hace mucho tiempo, esas respuestas principales no funcionan para mí. Aquí está mi solución, en 2020.

Antecedentes : mysql / mariadb fresco instalado por homebrew.

Problema : la contraseña de root no está vacía ni es desconocida.

La solución :

  1. mysql -u NOMBRE-DE-USUARIO-SU-SISTEMA -p
  2. La contraseña está vacía (presione enter)
  3. ALTER USER 'root' @ 'localhost' IDENTIFICADO POR 'NEW-ROOT-PASSWORD';
  4. PRIVILEGIOS DE FLUSH;

La razón :

  1. Homebrew creará un usuario con privilegios de root nombrado por el nombre de usuario actual de MacOS.
  2. no tiene contraseña
  3. Dado que tiene todos los privilegios, simplemente restablezca la contraseña de root con ese usuario.
  4. La contraseña inicial para root se generó aleatoriamente.

2020 respuesta correcta. No puedo pedir una contraseña para el nombre de usuario de MacOS
OrigamiEye

2
  1. ir al icono de Apple -> preferencias del sistema
  2. abrir Mysql
  3. en los casos, verá "inicializar base de datos"
  4. haga clic en eso
  5. se le pedirá que establezca una contraseña para root -> establezca una contraseña segura allí
  6. use esa contraseña para iniciar sesión en mysql la próxima vez

Espero que esto ayude.


Manera simple y fácil. Gracias.
Ezequiel França

1

Ejecutar estas líneas en la terminal funcionó para mí y para varios otros que tenían el mismo problema. Estas instrucciones se enumeran en la terminal después de que brew instale mysql con éxito.

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

donde YOURPASSWORDestá la contraseña de root.


Lo entiendo No such file or directorycuando ejecuto estos comandos
Agente Zebra


1

Esto funcionó para mí para MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

Inicie mysql ejecutando

los servicios de preparación inician mysql

Ejecute el script de instalación

mysql_secure_installation

Se le pedirá que configure un complemento VALIDATE PASSWORD. Ingrese y para hacer esto.

Seleccione la validación de contraseña requerida (realmente no importa si es solo usted quien usa la base de datos)

Ahora seleccione y para todas las opciones restantes: Eliminar anon. usuarios; no permitir inicios de sesión remotos de root; eliminar la base de datos de prueba; recargar tablas de privilegios. Ahora debería recibir un mensaje de

All done!



1

Esto funcionó para mí. ¡Espero que esto funcione para ti también! Siguelos.

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
¡Debe advertir que, ejecutar el rm -rf /usr/local/var/mysql/comando eliminará todas las bases de datos y datos de Mysql en su computadora!
Lashae

0

La contraseña predeterminada cuando instala mysql a través de brew es root, pruebe esto, funcionó para mí

mysql -uroot -proot


1
De brew info mysql: Hemos instalado su base de datos MySQL sin una contraseña de root. Para asegurarlo, ejecute: mysql_secure_installation
ssc

@ssc La mejor manera de establecer una contraseña en una instalación limpia.
alexventuraio

0

Terminal 1:

$ mysql_safe

Terminal 2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Esto podría haber funcionado en el momento en que se publicó la respuesta, pero se interrumpió mientras tanto; con la versión 5.7.21 de MySQL (actual), falla con la columna "Contraseña" desconocida en la "lista de campos".
ssc

ACTUALIZAR mysql.user SET authentication_string = PASSWORD ('xxxxxx!') WHERE User = 'root';
kevinc

0

Estoy usando Catalina y uso este mysql_secure_installationcomando y ahora funciona para mí:

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

entro rootcomo contraseña actual

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

y haz el resto


0

Entonces, en caso de que alguien tenga la misma situación y configuración que yo y también esté a punto de volverse loco, esto funcionó para mí. .

Después de una larga historia, tuve una MariaDB instalada en brew que seguía reiniciando automáticamente cuando mataba su proceso (esto era obra de brew), que tenía una contraseña de root, que no conocía.

$ brew services list

Esto muestra algo como:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

Detenga el servidor MySQL con:

$ brew services stop mariadb

Luego, inícielo de nuevo sin el usuario root (y sin usar brew):

$ mariadbd --skip-grant-tables &

Aquí, mysql_secure_installationno funcionó para mí debido al --skip-grant-tables, y no funcionaría sin el --skip-grant-tablesporque necesitaba la contraseña (que yo no tenía).
Intentar $(brew --prefix mysql)/bin/mysqladmin -u root password hunter2solo arrojó errores extraños y no hizo nada;$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2tampoco funcionó, dio diferentes errores y sugerencias que no funcionaron para mí.

Pero puede iniciar sesión en mysql ahora sin credenciales:$ mysql

Aquí, el antiguo método de actualización de la tabla de usuarios para root no funciona porque "La columna 'Contraseña' no es actualizable".
El nuevo método usa alter userPERO solo funciona después de que lo haya hecho, flush privileges;hágalo primero.
Entonces:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
( MariaDB [(none)]>es el indicador de MySQL aquí)
Entonces hazlo de flush privileges;nuevo.
Salga del cliente MySQL.

Ahora, en lo que respecta a brew, MariaDB todavía no se está ejecutando, por lo que se usa $ ps aux | grep -i mariadbpara encontrar el pid y $ kill -9 <pid>eso.
Luego utilícelo $ brew services start mariadbpara comenzar de nuevo.


-1

Use el archivo init para iniciar mysql y cambiar la contraseña de root.

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

Su contraseña de root ahora ha cambiado. Asegúrese de apagar el servidor correctamente para guardar el cambio de contraseña. En una nueva ventana de terminal ejecutar

mysqladmin -u root -p shutdown

e ingrese su nuevo pase.

Inicie su servicio y elimine el archivo init

brew services start mysql
rm /tmp/mysql-init

Probado en mysql versión 8.0.19

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.