[Bioperl-l] DBI connection parameters

Hilmar Lapp hlapp at gmx.net
Fri Aug 26 16:37:26 EDT 2005

On Aug 25, 2005, at 2:36 PM, Amit Indap wrote:

> [...]  But its having trouble connecting to my mysql db when I call
> my $dbseq= $adp->find_by_unique_key($seq);
> (where $seq holds my Bio::Seq object to which I want to add features
> to) The stack is listed at the end of the msg.

The stack says:

> MSG: failed to open connection: Access denied for user
> 'amit'@'' (using password: NO)

Can you connect using the mysql shell as the above user from machine without using a password? You supply the password to  
BioDB->new() using the -pass option.

> [...]
> Elswhere in my code I have a low-level query for my biosql db using
> DBI in which I connect to mysql reading a .my.cnf file:
> my $conn = DBI->connect("DBI:mysql:amit" .
> ";mysql_read_default_file=/home/amit/.my.cnf", $user, $passwd);
> Is there a way for to tell bioperl to read this .my.cnf file when it
> makes its database connection?

No, not until now. I added an option (-dsn) that lets you specify the  
dsn to be used verbatim for connecting. It should propagate to the  
anonymous cvs server over the next 1-2 hours. You can now also specify  
this option (--dsn) to load_{seqdatabase,ontology}.pl.

There is also an option -initrc that lets you specify a file that  
evaluates to a hash ref with all the parameters as keys. Check out the  
POD for Bio::DB::BioDB->new(). I also exposed this option (--initrc)  
now in load_{seqdatabase,ontology}.pl, apparently I had forgotten to do  
this before.


 From the respective POD section I wrote on --initrc:

        --initrc paramfile
          Instead of, or in addition to, specifying every individual  
          connection parameter you may put them into a file that when  
read by
          perl evaluates to an array or hash reference. This option  
          the file to read; the special value DEFAULT (or no value) will  
use a
          file ./.bioperldb or $HOME/.bioperldb, whichever is found  
first in
          that order.

          Constructing a file that evaluates to a hash reference is very  
          ple. The first non-space character needs to be an open curly  
          and the last non-space character a closing curly brace. In  
          the curly braces, write option name, followed by => (equal to  
          greater than), followed by the value in single quotes.  
Separate each
          such option/value pair by comma. Here is an example:

              -dbname => 'mybiosql', -host => 'foo.bar.edu', -user =>  
'cleo' }

          Line breaks and white space don't matter (except if in the  
          itself). Also note that options only have a single dash as  
          and they need to be those accepted by Bio::DB::BioDB->new()
          (Bio::DB::BioDB) or Bio::DB::SimpleDBContext->new()  
          pleDBContext). Those sometimes differ slightly from the option  
          used by this script, e.g., --dbuser corresponds to -user.

          Note also that using the above example, you can use it for  
          and still connect as user caesar by also supplying --dbuser  
caesar on
          the command line. I.e., command line arguments override any  
          ters also found in the initrc file.

          Finally, note that if using this option with default file name  
          the default file is not found at any of the default locations,  
          option will be ignored; it is not considered an error.

>  For some reason to open a mysql
> connection on my machine i need to open up a ssh -L connection to the
> machine where the mysql server lives  with some funky parameters. (If
> this is more appropriate for biosql mailiing list, apologies but I
> didn't want to cross post :)
> Amit Indap
> Cornell University
> ------------- EXCEPTION  -------------
> MSG: failed to open connection: Access denied for user
> 'amit'@'' (using password: NO)
> STACK Bio::DB::DBI::base::new_connection
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/DBI/base.pm:253
> STACK Bio::DB::DBI::base::get_connection
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/DBI/base.pm:213
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::dbh
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/ 
> BasePersistenceAdaptor.pm:1477
> STACK Bio::DB::BioSQL::BaseDriver::prepare_findbyuk_sth
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/BaseDriver.pm:515
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::_find_by_unique_key
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/ 
> BasePersistenceAdaptor.pm:927
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::find_by_unique_key
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/ 
> BasePersistenceAdaptor.pm:855
> STACK Bio::DB::BioSQL::PrimarySeqAdaptor::get_unique_key_query
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/PrimarySeqAdaptor.pm:395
> STACK Bio::DB::BioSQL::BasePersistenceAdaptor::find_by_unique_key
> /usr/lib/perl5/site_perl/5.8.5/Bio/DB/BioSQL/ 
> BasePersistenceAdaptor.pm:845
> STACK toplevel /home/amit/bin/HCG-blatparser.pl:181
> _______________________________________________
> Bioperl-l mailing list
> Bioperl-l at portal.open-bio.org
> http://portal.open-bio.org/mailman/listinfo/bioperl-l
Hilmar Lapp                            email: lapp at gnf.org
GNF, San Diego, Ca. 92121              phone: +1-858-812-1757

More information about the Bioperl-l mailing list