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

Responder a