[R-es] Aprendiendo RMySQL

Xavier Fernández i Marín xfim.ll en gmail.com
Sab Mayo 8 20:11:42 CEST 2010


Kjetil Halvorsen vas escriure el dia dv, 07 mai 2010:

> fue mandado por error antes de terminar .... continuando abajo
> 
> 2010/5/7 Kjetil Halvorsen <kjetil1001 en gmail.com>
> 
> > Hola!
> >
> > Estoy tratando de aprender como usar un base de datos con R. Nunca he usado
> > un base de
> > datos antes. Trato con RMySQL, todo instalado en ubuntu linux 10.04.
> >
> > library(RMySQL)
> > myBase <- dbDriver("MySQL")
> >
> >  con <- dbConnect(myBase)
> > Error in mysqlNewConnection(drv, ...) :
> >   RS-DBI driver: (Failed to connect to database: Error: Access denied for
> > user 'kjetil'@'localhost' (using password: NO)
> > )
> >
> >
> > Que debo hacer? Es necesario iniciar MySQL antes, afuera de R?
> >
> > Mi intenci?n por el momento simplemente es iniciar un base nuevo, llenarlo
> > con algunos
> >
> datos de un data.frame, almacenarlo, t talvez tratar de accederlo desde
> afuera de R como un control.

Hola,
                                                                      
El error parece indicar que MySQL está funcionando, pero que no hay
permisos para acceder a la base de datos.                        
                                                                  
Has intentado acceder a la base de datos desde la línea de comandos? Te da
el mismo error? Si es así, debes asegurarte de dar permisos a tu usuario.
                                                                    
En toto caso, asegúrate de que MySQL está funcionando (en Ubuntu es algo
como "/etc/init.d/mysqld" ... ¿status?.                    
                                                                
Para evitar pasar argumentos a MySQL puedes utilizar el archivo ~/.my.cnf,
donde puedes añadir tu usuario y contraseña (asegurándote de dar los
permisos de lectura y escritura adecuados para que otros usuarios no puedan
acceder).                                                                        
                                                                 
Te dejo una pequeña función que uso para cargar los datos desde MySQL:

                                                                                                                                                                                      
-----8<---------------                                                                                                                                                                
                                                                                                                                                                                      
bdd <- function(dfoutput, database, query) {                                                                                                                                          
  mgr <- dbDriver("MySQL")                                                                                                                                                            
  con <- dbConnect(mgr, dbname=database)                                                                                                                                              
  assign(dfoutput, dbGetQuery(con, query), env=.GlobalEnv)
  dbDisconnect(con)                                                                                                                                                                   
  dbUnloadDriver(mgr)                                                                                                                                                                 
}                                                                                                                                                                                     
                                                                                                                                                                                      
select <- "SELECT ..........."                                                                                                                                                        
 # este es el punto donde debes aprender MySQL, como ha dicho Xavi en el                                                                                                              
 # mensaje anterior                                                                                                                                                                   
                                                                                                                                                                                      
# Para recuperar los datos desde la base de datos                                                                                                                                     
bdd("nombre.objeto.en.R", "base de datos", query=select)                                                                                                                              
                                                                                                                                                                                      
-----8<---------------                                                                                                                                                                
                                                                                                                                                                                      
                                                                                                                                                                                      
Un saludo,            

-- 
-  Xavier  -



Más información sobre la lista de distribución R-help-es