El 07/02/2014, a las 20:59, Erick Ocrospoma <zipper1...@gmail.com> escribió:
> 2014-02-07 14:19 GMT-05:00 Ramses <ramses.sevi...@gmail.com>: >> El 07/02/2014, a las 19:58, Camaleón <noela...@gmail.com> escribió: >> >>> El Fri, 07 Feb 2014 18:30:22 +0100, Ramses II escribió: >>> >>> (...) >>> >>>>>> mysql -u pepe --password=pepepass mibasededatos -e "SELECT * FROM >>>>>> tabla where ...." -B > fichero_salida.csv >>>>>> >>>>>> Me da un error diciendo que no tiene permisos. >>>>> >>>>> ¿Qué error, exactamente? Aunque me lo imagino, pero nunca está de más >>>>> confirmar :-) Por otra parte, ¿te permite ejecutar el "SELECT... >>>>> FROM..." sin el volcado? En cualquier caso, esta página te puede dar >>>>> alguna idea: >>>> Esta es la salida del comando: >>>> >>>> # mysql -u pepe --password=pepepass encuesta_db -e "SELECT * FROM >>>> encuesta where MONTH(fecha)=MONTH(CURDATE()) INTO OUTFILE >>>> '/consultas/pruebas.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY >>>> '\"' LINES TERMINATED BY '\r\n'" >>>> ERROR 1045 (28000) at line 1: Access denied for user 'pepe'@'localhost' >>>> (using password: YES) >>>> # >>> >>> Gracias :-) >>> >>>> El SELECT... FROM... lo permite sin problemas en MySQL entrando con el >>>> user "pepe". >>> >>> Okay. >>> >>> (...) >>> >>>>> Comprueba los permisos del usuario (show grants...) y compáralos con los >>>>> que tiene el administrador. >>>> >>>> Los permisos que tiene "root" son: >>> >>> (...) >>> >>>> | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY >>>> PASSWORD 'xxxxxxx' WITH GRANT OPTION | >>> >>>> Los permisos que tiene "pepe" son: >>> >>> (...) >>> >>>> | GRANT USAGE ON *.* TO 'pepe'@'localhost' IDENTIFIED BY PASSWORD >>>> 'xxxxxxxxxxxxxx' | >>>> | GRANT ALL PRIVILEGES ON `encuesta`.* TO 'pepe'@'localhost' WITH GRANT >>>> OPTION | >>> >>> (...) >>> >>> Hum... dos apuntes: >>> >>> 1/ Tengo mis dudas en la sintaxis que usas para seleccionar la base de >>> datos (`encuesta`.*), comprueba que sea la correcta. Estoy leyendo el >>> manual pero no me queda claro el uso de esas comillas simples invertidas >>> ni si la base de datos se llama así, exactamente. >>> >>> (supongo que la sintaxis estará bien porque si no te daría un error al >>> ejecutar el comando pero el nombre de la base de datos sobre la que >>> quieres aplicar los privilegios sí tiene que coincidir) >> >> Camaleón, esas son las salidas del comando "show grants;" habiendo entrado >> en mysql con cada usuario. Realmente la base de datos es "encuesta_db", sólo >> que al pegar los datos aquí, se ha perdido el _db. >> >>> 2/ No has especificado contraseña para el usuario pepe (no hay >>> "IDENTIFIED BY PASSWORD") ¿es correcto? >> >> Eso es lo que aparece al entrar en MySQL con el usuario "pepe", con su >> contraseña, y ejecutar el comando "show grants;". >> >>>> Puede que el tema esté en lo que han comentado varios de ustedes, en la >>>> asignación del permiso FILE, pero como he estado leyendo, parece que es >>>> un permiso que se tiene que asignar sobre todo, y no sólo sobre una base >>>> de datos en concreto. >>>> >>>> Yo quiero que ese usuario "pepe" solo tenga acceso a "encuesta_db", y >>>> nada más. >>> >>> Acceso y permisos para volcar los datos a un archivo, que creo que ahí es >>> donde tienes el problema: >>> >>> http://dev.mysql.com/doc/refman/5.1/en/select-into.html >>> >>> El comando que quieres ejecutar necesita de permisos concretos, según >>> parece. >>> >>>> Ahora, si estoy en lo cierto del permiso FILE, parece que lo más viable, >>>> en cuanto a seguridad se refiere, es ejecutar ese comando con el usuario >>>> "root". ¿Estoy en lo cierto?. >>> >>> Según entiendo, FILE es un "privilegio" que tendrías que activar/ >>> habilitar sobre tu usuario para que pueda realizar la acción que pides. >>> No es un comando. >>> >>> http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file >> >> No he dicho que sea un comando, digo que es un permiso. A lo que me refería >> con lo de ejecutar el comando con el usuario "root", es a ejecutar el "mysql >> -u root --pass.........". >> >> >> Saludos, >> >> Ramses > > Haz un > > mysql> grant all privileges on encuesta_db.* to 'pepe'@'localhost' > identified by 'pepepass'; > mysql> flush privileges; > > con eso conseguirás que el usuario pepe solo tenga acceso a dicha db. Erick, con la salida que he puesto antes, creo que sólo tiene acceso a esa base de datos. El tema está ahora en que no tiene permiso FILE, por lo que parece que es por eso por lo que no puede exportar a un fichero .csv. He estado leyendo y hablan de que dar permiso FILE a un usuario, puede ser un tanto peligroso... He leído que FILE es un permiso / privilegio Global, es decir, que creo que no se puede aplicar a una única base de datos, sino que se aplicaría a todas. ¿Estoy en lo cierto? Bueno, aunque, supuestamente, si al resto de bases de datos no tiene permisos SELECT, DROP, DELE..., tampoco podría exportarlas ni trastearlas, ¿no?. Saludos, Ramses -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/0ee39fe7-2a5d-4624-a831-29c6064a0...@gmail.com