Hoy inicié el servidor MySQL con usuario root y luego al intentar apagarlo necesité ingresar la clave.
Es correcto?
Gs
| ||||
Hace tiempo, tratando de correr el famoso phpmyadmin, se me corrumpió la clave del usuario root motivo por el cual, encontré un pcdto que me la volvía a generar. Ete aquí que al instalar MySQL, todos sabemos que el usuario root NO TIENE CLAVE. Puede, intuyo, que desde el momento que uno se la asigna, Mysql no permita cerrarse si no es con una clave. Digo, al arrancar el servidor mysqld (daemon) y luego querer cerrarlo, estoy obligado a identificar un usuario. En este caso el pcdto que hago es: A) Arranco estando en el directorio Bin el servidor MySQL (NO MYSQL) es decir mysqld B) Ahora intento cerrar el servidor (apagarlo). Esto se puede hacer bruscamente desde el Administrador de Tareas con Ctrl+Alt+Del o tipeando : mysqladmin -u root shutdown..... y ahí es donde de la única manera que me permite cerrarlo a través de la línea de comandos es haciendo esto: mysqld -u root -p shutdown Ingreso la clave y el servidor se cierra Lo que no entiendo es por qué se inicia sin clave cuando mi usuario root tiene una asignada y cuando lo quiero cerrar, me la pide???? Saludos
__________________ When all else is lost the future still remains. |
| ||||
No hay forma claudiovega, si no le indico el uso de password, direcctamente me dice "Access denied", si no recuerdo mal, ahora estoy en el trabajo. Saludos
__________________ When all else is lost the future still remains. |
| ||||
Este es el pcdto que ejecuto tanto para iniciar como desconectar el servidor. Lo arranco con: c:\Mysql\bin\mysqld Si EJECUTO: mysqld -u root shutdown me aparece lo sgte.: Can't start sever: Bind on TCP/IP port: No error 060510 23:01:26 Do you already have another mysqld server running on port: 3306? 060510 23:01:26 Aborting 060510 23:01:26 C:\Mysql\bin\mysqld.exe: Got signal 11. Aborting! 060510 23:01:26 Aborting y si independientemente de todo esto luego de iniciar el servidor intento apagarlo con: mysqladmin -u root shutdown me aparece el sgte. mensaje: C:\Mysql\bin\Mysqla~1.exe: connect to server al 'localhost' failed error: 'Access denied for user: 'root@localhost' (Using password: NO) Gs
__________________ When all else is lost the future still remains. |
| ||||
Sólo queda revisar que el usuario root tenga acceso desde localhost sin password, para ello puedes listar la tabla user de la base mysql, asi: mysql> use mysql; mysql> select user, host, password from user; Debiera aparecer algo como esto:
Código:
------------------------------ user | host | password ------------------------------ root | localhost | ------------------------------ |
| ||||
Hola claudiovega. Mirá. Arranqué el servidor (mysqld), Arranqué el cliente (mysql) y estando ya con el prompt mysql> ejecuté el primer comando que vos decís es decir use mysql; a lo cual obtuve el sgte. msg: Error 1044:Access denied for user: '@localhost' to database 'mysql' mysql> Haciendo memoria hice: quit mysql -h localhost -u root -p y le mandé la password salió el prompt mysql> Abrí la base msql y luego tipee el 2do comando que me indicaste. Ahi SI, me aparecieron 2 rows NO 1 row donde salió lo sgte.: +---------------+----------------+------------------+ | host | user | password | +---------------+----------------+------------------+ | localhost | root | 114545gep6666d8 | | localhost | | | +---------------+----------------+------------------+ Bueno, a mi humilde parecer de todo este asunto se desprende: A) Definitivamente el usuario root posee una clave. Correcto? B) No existen más usuarios definidos que el usuario root. Correcto? C) Evidentemente la clave que yo asigné al usuario root y la que se vé en la columna "password" no son en lo absoluto idénticas sin embargo, tengo entendido que 114545gep6666d8 es la clave que yo asigné PERO ENCRIPTADA. Correcto? D) Si C es correcta, por qué motivo no veo la clave "legible" que yo asigné? En síntesis, sigo sin entender cómo puedo arrancar el sevidor (mysqld) sin clave y para apagarlo debo colocar una. MGS.
__________________ When all else is lost the future still remains. |
| ||||
a) si, tiene clave. b) asi es. c) lo que ves ahi es la clave encriptada. d) dado que c es correcta no puedes ver la clave legible, mysql creo usa md5 para encriptar, lo encriptado jamas es legible de nuevo usando md5. Arrancar el servidor o apagarlo se hace en: panel de control -> servicios, o usando un software administrador tal como mysql administrator, estos programas ya "saben" que puedes apagar/arrancar el server y por eso no piden clave, sin clave no se puede hacer, sino el servidor sería muy inseguro, no crees? |
| ||||
claudiovega me permito disentir en algo contigo y luego te pregunto otra cosilla. Lo de arrancar el servidor como tú dices es correcto pero no es la única forma. Yo tengo Win98 SE y el servidor lo puedo arrancar o a través de un pgma. como winmysqladmin o desde la línea de comandos tipeando mysqld. De todos modos insisto en lo mismo, lo peligroso por sobretodo radica en acceder a las bases de datos por lo cual, a ese nivel puedo quedarme tranquilo que actualmente no tengo otro usuario que no sea el root y encima, con clave pero sigo criticando lo mismo es decir, tipeo mysqld sin clave y arranca el servidor. Intento cerrarlo (desde la línea de comandos) y si no es con clave no puedo hacerlo. Me parece que aquí y SIEMPRE HABLANDO DE LA LÍNEA DE COMANDOS, Mysql debería pedir o no, clave para todo en fin...... Pregunta: A)Por lo visto, en la actualidad tengo un solo usuario creado que es el root y con clave asociada. Por qué entonces cuando tiré el SELECT me aparecieron 2 rows y en la columna host DOS VECES LOCALHOST.??? B) Si no me equivoco, ya puedo comenzar a trabajar con Mysql dado que no tengo ningún usuario perdido por ahí con todos los privilegios que pudiera provocarme problemas. Correcto? MGs
__________________ When all else is lost the future still remains. |
| ||||
SELECT Usuario Desconocido 2 Rows Tratando el tema de más abajo, me ha sorprendido ver como resultado del SELECT 2 rows en lugar de 1 con los datos relacionados hasta lo que yo tenía entendido, era el único usuario creado. +---------------+----------------+------------------+ | host | user | password | +---------------+----------------+------------------+ | localhost | root | 114545gep6666d8 | | localhost | | | +---------------+----------------+------------------+ Como digo, veo que las filas resultantes son 2 y pregunto: Puede que tenga otro usuario más a parte del root y sin clave en mi base Mysql.? GS
__________________ When all else is lost the future still remains. |
| ||||
MySQL Usuario Olvidado sin Clave Hola claudio (puedo llamarte claudio verdad??? después de todo somos tocayos) bueno el tema es que apelando a mis humildes conocimientos de SQL, probé un sencillo select (select user from user where user <> 'root'; y por supuesto lo que obtuve fué: +-------+ | user | +-------+ | | +-------+ 1 row in set (0.28 sec) Está más que claro que debo eliminar este usuario inclusive porque con un select anterior, verifiqué que no posee password lo cual, es de temer. Asi que lo eliminaré y creo que ya voy cerrando esta preocupación mía de quedarme algún usuario "colgado" que me provocara un hueco de seguridad. Lo que sí, me quedé pensando en los comandos sugeridos por tí cuando mencionas ..podrías ver también que permisos tienes revisando las tablas de la base mysql. CUAL?? Por si de algo sirve, tengo las siguientes tablas: columns_priv, db, func, host, tables_priv, user. Desde cuál veo los permisos? User? Cómo? Gs y un abrazo.
__________________ When all else is lost the future still remains. |
| ||||
MySQL Localizar Tabla de Permisos Hola Claudio cómo va? Bueno mirando un poco por ahí, encontré una página que menciona: Todo el sistema de permisos de acceso al servidor, a las bases de datos y sus tablas, MySQL lo almacena en una tabla llamada mysql, que como todas estará en el directorio /data, a menos que hallamos especificado otro directorio.. Por lo visto, en el SELECT que yo tipeé, no aparece lo cual no sé si es síntoma de preocupación o qué cosa pero me llama mucho la atenció que al abrir esa BD (Mysql) esta no me devuelva entre sus tablas, una de igual nombre. Ojalá esté equivocado, encuentra la famosa tabla de permisos y así poder seguir practicando. Un abrazo.
__________________ When all else is lost the future still remains. |
| ||||
Mysql Localizar tabla de permisos de usuario Hola claudio bueno, te cuento. Abrí la tabla db me arrojó 2 filas y entre los tantos campos que contiene se visualizan algunos como: Insert_priv, update_priv, etc por lo cual puede que aquí se encuentre entonces, lo que vos decías con respecto a los permisos sin embargo y siguiendo parte del texto capturado de otro lugar donde menciona :"Todo el sistema de permisos de acceso al servidor, a las bases de datos y sus tablas, MySQL lo almacena ..." efectivamente localicé una carpeta Mysql con archivos como tables_priv.frm, tables_priv.MYD, el mismoj .MYI por lo cual, no sé si acá también puden identificarse los permisos de todos los usuarios. Un abrazo.
__________________ When all else is lost the future still remains. |
| ||||
Bueno, he estado creo adivinando solamente. La tabla user tiene los permisos generales del usuario, es decir, lo que puede y no puede hacer. select * from user; Verás muchas columnas que tienen como valor Y o N segun esté o no permitido hacer lo que indica. Haz creado otros usuarios? Tienes dudas acerca de que permisos deberías darles? |
| ||||
Tabla Permisos db o /Data/mysql? Hola Claudio. Gs por seguir orientándome con esto. En realidad, desque que inicié mis post, el miedo más grande estaba representado por lo "huecos de seguridad". Como recordarás, todo el problema que tuve con el usuario root y los otros que dieron vueltas por ahí, fué a partir de la configuración del PhpMyAdmin. Hoy por hoy, por lo que veo y gracias a tu ayuda, tengo un solo usuario (el root) y con clave por lo cual los huecos de seguridad creo que se TERMINARON. Sí entiendo, debería cerrar un poco más el tema de los permisos en caso que como es lógico suponer, publique una base en otro servidor y la tabla que los contiene, viaje conjuntamente con la Base de Datos propiamente dicha. Ahí, entiendo y estoy contigo, la tabla que debe viajar de permisos debe ser la db. Por el momento, mi preocupación estaba en el hueco de seguridad. Seguiré investigando. Considero importante ver la diferencia entre el nombre de la tabla sugerida por tí y que efectivamente tiene lo que tú dices, y la famosa "mysql" que cuelga de la carpeta Data. Ummmmmm, todo un rollo ehhh
__________________ When all else is lost the future still remains. |
| ||||
Lo que importa, es que tus aplicaciones se conecten al servidor mysql usando un usuario normal, no root, con los permisos suficientes (minimos) para realizar las actividades propias del sistema. Es decir, si un usuario sólo debe ver información, sólo debe tener permiso de select, etc. |
| ||||
Si Claudio. completamente de acuerdo. Por suerte en tanto tutorial dando vueltas por ahí, eso está más que claro solo que no sabía NO ES IMPORTANTE AHORA, si cuando uno lleva su base de datos para publicar en internet, acompaña la base de permisos por separado o es una tabla más (como me parece) dentro de la mismísima base. Gracias por tu ayuda. Gracias por tu tiempo. Un gran abrazo.
__________________ When all else is lost the future still remains. |