El día 7 de febrero de 2014, 11:30, Ramses II <ramses.sevi...@gmail.com> escribió: >>-----Mensaje original----- >>De: Camaleón [mailto:noela...@gmail.com] >>Enviado el: viernes, 07 de febrero de 2014 15:44 >>Para: debian-user-spanish@lists.debian.org >>Asunto: Re: [OT] Permisos de usuarios en MySQL. >> >>El Thu, 06 Feb 2014 23:53:47 +0100, Ramses escribió: >> >>> Tengo una aplicación que se conecta a MySQL con un usuario "pepe" con >>> password "pepepass" con el que creo, modifico, borro y muestro >>> registros de/en una base de datos. >>> >>> El usuario lo cree en MySQL con los permisos ALL para localhost y esa >>> base de datos en particular. >>> >>> Bien, el tema es que si intento generar un fichero .CSV exportando una >>> selección de registros con un comando del tipo: >>> >>> 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) > # > > El SELECT... FROM... lo permite sin problemas en MySQL entrando con el user > "pepe". > >> >>The MySQL Access Privilege System >>http://dev.mysql.com/doc/refman/5.7/en/privilege-system.html >> >>> Si ejecuto el mismo comando pero con el usuario "root" y la password >>> "rootpass", me genera el fichero sin problemas. >>> >>> mysql -u root --password=rootpass mibasededatos -e "SELECT * FROM >>> tabla where ...." -B > fichero_salida.csv >>> >>> Si ejecuto el comando: >>> >>> mysql -u pepe -ppepepass >>> >>> Entro perfectamente en MySQL y puedo crear, borrar, modificar y listar >>> registros de esa base de datos. >>> >>> ¿Sabe alguien si necesito algún permiso especial para ejecutar el >>> mismo comando con un usuario distinto a root? >> >>Comprueba los permisos del usuario (show grants...) y compáralos con los que >>tiene el administrador. > > Los permisos que tiene "root" son: > > mysql> show grants; > +----------------------------------------------------------------------------------------------------------------------------------------+ > | Grants for root@localhost > > | > +----------------------------------------------------------------------------------------------------------------------------------------+ > | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD > 'xxxxxxx' WITH GRANT OPTION | > +----------------------------------------------------------------------------------------------------------------------------------------+ > 1 row in set (0.00 sec) > > Los permisos que tiene "pepe" son: >encuesta > mysql> show grants; > +--------------------------------------------------------------------------------------------------------------+ > | Grants for pepe@localhost > | > +--------------------------------------------------------------------------------------------------------------+ > | GRANT USAGE ON *.* TO 'pepe'@'localhost' IDENTIFIED BY PASSWORD > 'xxxxxxxxxxxxxx' | > | GRANT ALL PRIVILEGES ON `encuesta`.* TO 'pepe'@'localhost' WITH GRANT > OPTION | > +--------------------------------------------------------------------------------------------------------------+ > 2 rows in set (0.00 sec) > > 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. > > 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?. > > > Saludos, > > Ramses > > > --
Acabo de realizar una serie de pruebas, reproduciendo tu error al pie de la letra. La solucion: mysql -u root -p mysql> use mysql; mysql> update user set File_priv='Y' where user ='pepe'; mysql> quit desde consola como root ( no sé si es necesario, prueba) # /etc/init.d/mysql restart # locate encuesta/encuesta.frm /var/lib/mysql/encuesta /var/lib/mysql/encuesta/encuesta.frm mysql -u pepe -pcontraseña mysql> select ... INTO OUTFILE 'pruebas.csv' ... ; Query OK, x rows affected (x.xx sec) desde consola # ls -l /var/lib/mysql/encuesta/pruebas.csv -rw-rw-rw- 1 mysql mysql xx feb 7 13:59 pruebas.csv voilá!!! Saludos -- Hector -- El Pic no pudo Iniciar correctamente. Inserte el disco de arranque y presione cualquier pin para continuar... Linux Registered User #467500 https://linuxcounter.net/user/467500.html -- 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/CACzWLT+yzc+D=hwuo1taym6irso4vsyf-ib-zu4kcbjnat9...@mail.gmail.com