Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Hans el Topo en 7 Junio 2008, 16:47 pm



Título: crear usuario mysql desde .bat
Publicado por: Hans el Topo en 7 Junio 2008, 16:47 pm
saludos,
estoy intentando crear un usuario de mysql desde .bat y ando un poco confundido en el proceso que sigue .bat para pasar a la siguiente orden

lanzo la orden de logeo
Código:
mysql -h localhost -u root -p
ahora la consola le pide la contraseña, a mi me gustaría que inmediatamente cuando el usuario meta la contraseña de root
la siguiente instrucción se lance sin esperar a que cierre la sesión
Código:
mysql GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;

¿es posible hacerlo?


Título: Re: crear usuario mysql desde .bat
Publicado por: ^Tifa^ en 7 Junio 2008, 17:38 pm
Pues no se si BAT soporte 'here documents' como bash pero supongo que si o al menos debe tener una contraparte.

porque no le pasas la clave de root junto al comando del login? o sea :

mysql -h localhost -u root -pcontrasena

Y ya logeado debes crear un usuario porque esto :

GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;

No crea un usuario, eso otorga todos los privilegios de una tabla a un usuario ya existente. Y tu dices que quieres crear un usuario... no otorgar permisos, o a lo mejor quieres crear un usuario y luego otorgarle permisos. O sea si fuera en bash con un here document :

mysql -h localhost -u root -pcontrasena << EOF
create user 'fulano';
set password for 'fulano'@'%' = password('contrasena');
grant all privileges on tabla.* to 'fulano'@'%';
EOF

Estas seguro que quieres otorgarle 'Grant Option' a dicho usuario??? Grant Option lo usamos en Mysql y Oracle para que ese usuario tenga potesta para otorgarle cualquier permiso de su tabla a otro usuario existente, y en estos casos es mejor que solo root pueda otorgar o quitar permisos y no otro usuario pero ya sabras tu.


Título: Re: crear usuario mysql desde .bat
Publicado por: Hans el Topo en 7 Junio 2008, 19:37 pm
antes que nada gracias por la ayuda, andaba algo perdido

el tema estaba en que el password del root la metiese él, pero pidiéndola y luego enviándola en el login supongo que también sirve.

la sentencia que he puesto crea un usuario con todos los privilegios en mysql sobre una tabla (para evitarme el tener que hacer los tres pasos que has puesto)

el usuario tiene que poder dar privilegios a otros para posteriormente si es necesario agregar más usuarios hacerlo desde el creado :X



Título: Re: crear usuario mysql desde .bat
Publicado por: Hans el Topo en 7 Junio 2008, 20:24 pm
bueno, he probado con el  << EOF y se cierra la consola dando un error que no puedo ver

la variable p tiene el valor de la contraseña

Código:
mysql -h localhost -u root -p%p% << EOF
GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;
EOF

¿alguna otra sugerencia?




Título: Re: crear usuario mysql desde .bat
Publicado por: ^Tifa^ en 8 Junio 2008, 00:37 am
Ok ya si te entendi.

Me habia perdido jeje, quisiera poder ayudarte mas, pero no se BATCH aunque aun asi imagino, que en BATCH se debe poder recibir entradas del teclado, por ende si creas un script podrias poner que la primera opcion que se imprima sea 'contrasena :' y recoger lo que el usuario introduzca y guardarlo en una variable, y usar dicha variable como contrasena en el login de Mysql. O sea por ejemplo.

print STDOUT "contrasena : "
$respuesta = <STDIN>  //Tomamos la entrada del usuario y la guardamos

if (defined $respuesta) { //Aqui se valida si $respuesta esta o no vacia igual puedes comparar con if ($respuesta != "")
$respuesta1 = mysql -h localhost -root -p$respuesta;
if ($respuesta1) {
grant all privileges on basedatos.* to 'fulano'@'%' identified by 'contrasena' with grant option;
}
} else {
print STDOUT "Error No se puede conectar\n"; }


Se que se puede hacer mejor de ahi lol, pero mas o menos vas captando la idea que te expongo verdad :) Ahora traducir eso a BATCH ya no sabria. Espero que alguien te de mejor ejemplo.


Título: Re: crear usuario mysql desde .bat
Publicado por: Hans el Topo en 8 Junio 2008, 14:58 pm
si el capturar datos en la entrada no me resulta ningun problema!!


el problema que tengo es que cuando genero la conexión mysql toma el foco y la siguiente instrucción del .bat no se ejecuta hasta que termina la sesion de mysql!!

estoy mirando todos los parámetros que tiene mysql (buff) y creo que he encontrado uno que lo hace -e

pero he optado por meter la consulta en el script que crea la base de datos  (tonto de mi no darme cuenta antes xD)

y como se puede iniciar una entrada de archivo al iniciar sesión wualá

Código:
rem %u% indica una variable con el nombre del user y %p% su contraseña ;D
mysql -hlocalhost -u%u% -p%p% < sql_datos.sql


gracias por intentar ayudarme