jueves, 5 de enero de 2017

Reseteando la contrasena de MariaDB en Linux Devuan (una variante Debian)

Update 09.01.17
He encontrado el origen del problema:
al detener el servicio mysql con service mysql stop, he iniciar en modo seguro con deb-maint. Puedo ver las tablas de los usuarios. Alli aparece lo siguiente;
+-----------+---------------------+---------------------+
| host         | user                      | password            |
+-----------+---------------------+---------------------+
| localhost | root                      | * Blablabla-foobar
| server      | root                      | * *Blablabla-foobar |
| 127.0.0.1 | root                      | * *Blablabla-foobar |
| ::1            | root                      | * *Blablabla-foobar |
| localhost  | debian-sys-maint | * *Blablabla-foobar |
| %             | user01                  |                     |
| %             | root                      | * *Blablabla-foobar |
+-----------+----------------------+---------------------+
el problema esta en el "hostname", para que funcione debes poner el "localhost" asi:
mysql -u root -h localhost -p
Pero mucho cuidado, pues esto no va a funcionar en la misma sesion, incluso tampoco con el mismo servicio, pues el modo seguro tambien se puede ejecutar "sin red" con lo que localhost tampoco funciona!



05.01.17 04:57

Si bien la contrasena de SQL no debería significar un problema grave, ya que es mas que seguro que tenemos la contrasena de root, por experiencia no resulta tan facil. Una cantidad de problemas se derivan de las versiones de SQL como de los systemas operativos que los albergan.

No estoy tratando aqui de competir contra las instrucciones de Oracle o MDB. Sino que documento aqui como resolví mis propios problemas, para tenerlo a mano en caso de volver a necesitarlo y ademas que si a alguien le sirven, me alegra.

service mysql stop
mysqld_safe --skip-grant-tables --skip-networking &

mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.28-MariaDB-0+deb8u1 (Debian)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not

 Ujum... entonces pruebo toda la session desde el comienzo con root:

 service mysql stop
 mysqld_safe --skip-grant-tables --skip-networking &
 mysql -u root 
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not allowed to change passwords


???  

Parece que tengo un terrible problema...
Bueno, la verdadera razon de ese problema parece residir en la configuracion original de mysql
bastante interesante es que el comando...

mysql_secure_installation

tambien me devuelve ese error:

Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)


lentamente estoy pensando en reinstalar todo, pero antes un par de tips interesantes que también encontré:
 
1.- hay un usuario debian-sys-maint que tiene privilegios elevados y puede ejecutar y configurar bases de datos, su contrasena es un texto aleatorio guardado en el archivo

/etc/mysql/debian.cnf

con él te puedes logear y resetear contrasenas

2.- Con el usuario debian-sys-maint (quizas también con otro) puedes visualizar los usuarios configurados de mysql.

select host, user, password from mysql.user; 

en esta tabla puedes ver "encriptadas" las contrasenas, esto puede ser util a pesar de todo para estar seguro de los nombres de usuario, saber si un usuario con contrasena desconocida/olvidada tiene la misma de uno que conozcamos, o para constatar si nuestro cambio o reseteo de contrasenas esta funcionando.

3.- El comando: update mysql.user set password=password('tu-contrasena') where user='root';
sirve para resetear contrasenas.

No hay comentarios:

Publicar un comentario