[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: [OT] Permisos de usuarios en MySQL.



>-----Mensaje original-----
>De: Camaleón [mailto:noelamac@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:

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


Reply to: