Habilite el acceso sin contraseña a MySQL


15

¿Cómo puedo eliminar mi contraseña para MySQL? No quiero tener una contraseña para conectarme a la base de datos. Mi servidor está ejecutando Ubuntu.


Solo como cuestión de interés, ¿por qué no quieres una contraseña?
John Gardeniers

Por ejemplo, me encuentro con errores cuando ejecuto "dpkg-reconfigure phpmyadmin". Se detiene con el error 1045 con acceso denegado root @ localhost "contraseña: no" terminando.
Lacek

Respuestas:


29

Personalmente, creo que es mejor establecer una contraseña y guardarla en /root/.my.cnf:

Primero:

mysqladmin -u root password 'asdfghjkl'

Luego edite el archivo raíz .my.cnf:

[client]
password = asdfghjkl

Asegúrate de hacerlo chmod 0600 .my.cnf.

Ahora tiene una contraseña pero ya no se le solicita. Mi instalación predeterminada del servidor MySQL es una contraseña única totalmente aleatoria para cada servidor MySQL, guardada en el archivo .my.cnf como este.


1
Estoy totalmente de acuerdo con la configuración de su entorno para autenticarlo automáticamente en lugar de eliminar la contraseña.
Zoredache

2
Es posible que necesite citas alrededor de esa contraseña en .my.cnf. No funcionó para mí sin.
user67641

1
@ user67641: Puede depender de la versión y de lo que hay en su contraseña ... Las mías son largas cadenas aleatorias de caracteres alfanuméricos (sin caracteres especiales) y no se necesitan comillas.
Freiheit

2
Si necesita crear /root/.my.cnf, vale la pena establecer explícitamente los permisos 0600 para asegurarse de que ningún otro usuario pueda espiar. La mayoría de las veces los usuarios normales no pueden descender a / root, pero la paranoia adicional casi siempre está justificada.
Dale Anderson

Missing mv ./+%Y%m%d. $ Db.sql $ OUTPUT` entre mysqldump y gzip
Siddharth

9

Si TIENES una contraseña establecida para MySQL, sigue las instrucciones en Recuperar contraseña de root de MySQL y luego configura tu contraseña como nula:

Para 5.7.6 y posterior

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Para 5.7.5 y anteriores

update user set password=PASSWORD("") where User='root';

* necesita un reinicio de la base de datos (consulte las instrucciones en el enlace) para que esto surta efecto.

sudo service mysql restart

en este caso, no olvide "descargar privilegios";
Marco Ramos

@meyosef: marque una respuesta como respondida si resolvió su problema (haga clic en la marca de verificación verde debajo del número de votos).
jneves

Pensé que podría usar una contraseña vacía solo para el socket Unix y no para el loopback, pero no es posible. El unix_socketcomplemento hace algo ligeramente diferente.
Cuenca

9

Sí, menos contraseñas pueden ser algo bueno. Pero no solo abra la base de datos para todos.

a través de unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Esto le proporciona acceso mysql sin contraseña para un usuario root conectado localmente. Por cierto. Este es el valor predeterminado en las últimas versiones de Ubuntu / Debian.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Diapositivas explicativas: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
¡Bienvenido a SF! Encantadora primera respuesta: claro, un buen resumen, un enlace para una mayor exploración, y agrega algo al corpus de respuestas existente. Estoy encantado de ser tu primer voto a favor, y espero que te quedes para escribir más respuestas como esta.
MadHatter

Las diapositivas están bien, pero esta es la documentación real: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD

5

También puedes hacer:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Estoy bastante seguro de que, de forma predeterminada, no hay contraseña si es el usuario administrador y accede a ella localmente. ¿Estás encontrando algo diferente a eso?

¿Esto funciona?

#> mysqladmin -u root password ''
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.