Rails - Access denied for user 'root'@'localhost'

I suppose I should post this in a Rails mailing list or wiki, but the
medium I’m used to is USENET, so I thought I’d try here first. (I don’t
think there’s a Rails newsgroup - please correct me if I’m wrong -
and I see some Rails postings here sometimes, so I’m assuming this
is appropriate.)

I’m using the book “Ajax on Rails” to learn about Rails development and
after following along for the first example, in chapter 2 (pg 20), I’m
encountering the error:

#28000Access denied for user ‘root’@‘localhost’ (using password: NO)

This happens with the browser pointed to (as the book says to do):

http://localhost:3000/chapter2/myaction

This is after following the instructions to do:

script/generate controller chapter2 myaction

(which was after doing ‘rails ajaxonrails; cd ajaxonrails’ and starting
the server)

I suspect the problem is that the book forgot to tell me that I need to
create a database for the application and configure it. Is this the
case or should a database not be needed yet at this point - perhaps
something unforeseen is going wrong?

The complete error message I’m getting is:

Mysql::Error in Chapter2Controller#myaction

#28000Access denied for user ‘root’@‘localhost’ (using password: NO)

Thanks!

Jim C. wrote:

#28000Access denied for user ‘root’@‘localhost’ (using password: NO)
This looks like a MySQL user configuration issue.

Does user ‘root’ in MySQL have a password?

Have you created a better use account to use with the application DB?


James B.

www.happycamperstudios.com - Wicked Cool Coding
www.jamesbritt.com - Playing with Better Toys
www.ruby-doc.org - Ruby Help & Documentation
www.rubystuff.com - The Ruby Store for Ruby Stuff

I have had some issues using a blank mysql password / no password on
some boxes. Not sure if it’s rails or mysql, but try using a password.
Sent wirelessly via BlackBerry from T-Mobile.

On 2008-06-23, Jim C. [email protected]
wrote:

#28000Access denied for user ‘root’@‘localhost’ (using password: NO)
the server)
#28000Access denied for user ‘root’@‘localhost’ (using password: NO)

Thanks!

I found a fix for the problem, so I’ll answer my own question in case it
will help someone else with the same problem.

I did the following things to fix it:

  • run mysql_setpermission and use its interactive interface to allow
    the
    mysql root user to do everything (need to know the mysql root pw).

  • use the mysql command to connect as root and create the needed
    database
    (in this case, ajaxonrails_development).

  • In database.yml, make sure username is root and fill in the password
    field for the mysql root pw (or change the username to another mysql
    user and the password to that user’s password).

(Running mysql 14.12 on ubuntu 8.04 with rails 2.0.2-1; mysql, installed
via apt-get, was apparently initialized with only ordinary user
privileges for root.)

This happens generally when the mysql is not reached by the rails
applicaiton…
Probably there must be some super user/sudo user who need to grant the
acces
permissions for mysql to get connected.
If you can conntect using ruby script/console you can be aware of much
whats
is going on the command.

If I can suggest that using the root account on mysql is not
considered best practice. I would setup an account for your
application thusly

mysql> grant all on yourapp_production.* to ‘yourapp’@‘<your hostname
or %>’ identified by ‘decent_password’;
mysql> flush privileges;

http://dev.mysql.com/doc/refman/5.0/en/grant.html

Cheers

Dave