in reply to How do I direct DBI::mysql to a particular mysql instance

When you run:
mysql -u first -p
you are accessing mysql through the Unix domain socket (i.e. /var/run/mysqld/mysqld.sock), not a TCP socket (i.e. port 3306).

Here's how to connect in each of these cases:

# connect via the Unix domain socket my $dsn = "DBI:mysql:database=$db"; my $dbh = DBI->connect($dsn, ...); # connect via a TCP socket my $dsn = "DBI:mysql:database=$db;host=localhost;port=3309"; my $dbh = DBI->connect($dsn, ...);
For more details, see the DBD::mysql documentation.

Replies are listed 'Best First'.
Re^2: How do I direct DBI::mysql to a particular mysql instance
by hazards (Initiate) on Jul 21, 2008 at 17:56 UTC
    Folks, I thank you for the in sights. I attempted the suggested fixes with the following modified code.
    #!/usr/bin/perl -w use strict; use DBI; my $port=3309; my $host = '127.0.0.1'; my $db = 'udb'; my $username = 'usr'; my $password = 'passwd'; my $dsn = "DBI:mysql:database=$db;host=$host;port=$port"; my $dbh = DBI->connect("$dsn", "$username", "$password") or die "Couldn't connect to database: ".DBI->er +rstr;
    Which is,I think, the suggested TCP socket case using the loopback address for the localhost yet in my hands I still see:
    Couldn't connect to database: Access denied for user 'usr'@'localhost' + (using password: YES)
    What to try now?