I've always done my security settings in MySQL as something like the following: grant all on somedb.* to lennon@localhost identified by 'mypasswd'; grant all on somedb.* to lennon identified by 'mypasswd'; I think that the problem is that MySQL treats truly "local" connections (i.e., via the domain socket created on the filesystem by mysqld) differently from all network connections, even those made over the loopback interface. If the Ruby MySQL bindings used the local domain socket instead of TCP to connect to the MySQL server, you would see the same behavior you do with the command-line client. Try adding a 'user@localhost' privilege grant like the above to your database, and see if the connection works. Lennon