.yml/host: localhost fails in Rails app generation


#1

I’m running mysql Ver 14.12 Distrib 5.0.15, for Win32 (ia32) on a
WinXP/SP2
system.

I’m trying to build the Depot application described in Chap. 5 of Agile
Web
Dev. w. Rails, © 2005.

The generated database.yml file in depot\config contains several entries
of
“socket: /path/to/your/mysql.sock”. I couldn’t find an “mysql.sock”
file
anywhere on my system.

Thomas’ depiction of the .yml file includes the line “host: localhost”
instead, so I made the switch to that instead of the “socket: …:”
entry.

Following Thomas’ lead, I ran the cmd “ruby script/generate scaffold
Product
Admin”. It ran fine until it reported “Client does not support
authentication protocol requested by server; consider upgrading MySQL
client”. Other Rails examples have worked fine, so I don’t believe any
upgrade will solve my problem.

Any ideas how I can get around this roadblock?


#2

Other Rails examples have worked fine, so I don’t believe any upgrade will
solve my problem.

Woops. I should have said other apps, like MySQL-Front seem to connect
to
MySQL fine, so I don’t think upgrading MySQL is a solution. More
importantly, the version I’m running is, to the best of my knowledge,
the
current release version.

Incidentally, Rails runs fine for other (non-database) examples. And
the
Rails version was installed only a week or two ago, so I imagine it’s
current, as well.


#3

Poking around the 'Net to resolve this problem, I discovered that Gem
could
be used to install MySQL.

So I uninstalled my current ver. and am installing under Gem. I’ll post
“success” if that clears up my problem.

Also, I have a password on the root user. Some have suggested that
might
be problematic. But I pass the pswd in on the .yml file, so hopefully
that’s not the cause of my problem.’


#4

On Fri, 18 Nov 2005, Richard L. wrote:

The generated database.yml file in depot\config contains several entries of
“socket: /path/to/your/mysql.sock”. I couldn’t find an “mysql.sock” file
anywhere on my system.

Maybe because it issn’t a file?

srwxrwxrwx 1 mysql staff 0 Nov 11 18:07 /tmp/mysql.sock
srwxrwxrwx 1 mysql staff 0 Nov 11 18:07 /tmp/mysql4.sock

man ls gives:
d The entry is a directory.
[…]
s The entry is an AF_UNIX address family socket.

in the find man page:
-type c
True if the type of the file is c, where c is b, c, d,
D, f, l, p, or s for block special file, character
special file, directory, door, plain file, symbolic
link, fifo (named pipe), or socket, respectively.

And [cf your later message] don’t put the MySQL root password in the
yaml file, it gives those snooping too much power over your
databases.

    HTH
    Hugh

#5

Hi Hugh,

Thanks for responding:

Maybe because it isn’t a file?

Good point! I assume you didn’t notice that I running on
WindowsXP/SP2. I
didn’t think of it, but I do know some of Windows’ stuff isn’t
reflected in
file system (toolbars and menus come to mind). I’ll think harder about
how
I can expose sockets that are defined on my system

srwxrwxrwx 1 mysql staff 0 Nov 11 18:07 /tmp/mysql.sock
srwxrwxrwx 1 mysql staff 0 Nov 11 18:07 /tmp/mysql4.sock

It appears that in Unices, sockets are reflected in the file system even
though they’re not amenable to ordinary file operations such as append
and
copy & pastel

And [cf your later message] don’t put the MySQL root password in the
yaml file, it gives those snooping too much power over your
databases.

Right now, I was just trying to see if I can get stuff working. I’ll
take
the passwords out of there if I ever get Rails talking to databases.

One glimmer of hope was just dashed when I uninstalled MySQL in favor of
a
gem install of it. That failed and I didn’t see any easy solution.

I reinstalled MySQL with the hope that one other idea might pan out,
i.e.
using the hard-coded address rather than the symbolic localhost. One
web
posting suggested that Rails treats the symbol differently than the
127…

Again, thanks for weighing in. I hope some Windows guy dials in with
some
success story.

Regards,
Richard


#6

Hi Kev,

Thanks for weighing in on my problem.

Bottom line, problem solved:

I’m running on a WinXP/SP2 platform with MySQL 5.0.15
I Googled as you suggested (which I’ve been doing, but more vigorously
now).
Found a solution at
http://forums.mysql.com/read.php?45,25582,34721#msg-34721:
SET PASSWORD FOR ‘root’@‘localhost’ = OLD_PASSWORD(‘mypswd’);"

My yaml settings are:
development:
adapter: mysql
database: depot_dev
host: localhost
password: mypswd

Again, I appreciate you offering the solution of reverting to MySQL 4.x.
I
tried to avoid that because I wanted to be able to use the newer
features,
particularly transactions, in the app I intend to build with Rails
(after I
get done running tutorials).

Best wishes,
Richard


#7

Ok, I missed the first part, but I’m guessing this is Rails related

here’s a database.yml file segment from a windows rails app

development:
adapter: mysql
database: depot_development
socket: /path/to/your/mysql.sock
username: root
password: password

This is what I’m using (MySQL 4.1.x), Rails 0.14.3 on windows and as you
see the socket points to nothing in particular.

I think your problem is that you are on MySQL 5 and that version changed
how it handled passwords etc and I think the client driver that comes
with One-click installer (which as a windows user I assume you’re using)
doesn’t properly support the new server

google for

mysql5 authentication protocol

and you’ll see a host of problems (mainly php related).

Easy fix is to install MySQL4 instead of 5 and then the Rails defaults
automagically work

Kev