ちょっと視点を変えて下記を試してみましたが
・/var/run/mysqld/mysqld.sock のリンクを作成して mysql.sock とリンク名を変更
・RoRで作りかけアプリの中 /scheduler/tmp に放りこんでみる
・/scheduler/config/database.ymlに昨日追加した
「socket: /var/run/mysqld/mysqld.sock」の一文を削除
・$ rake db:migrate を実行してみる。
→ やっぱりダメ!
database.ymlをもう一度見てみる。
コメントには「MySQLのバージョンは4.0と5.0がお勧め」って書いてある。
バージョンは 5.0.38 だから問題なさそう。
database.ymlの socket: 指示を消すと rake はどこから
「/tmp/mysql.sock」だと命令されているのか?
ググってみると
☆ MySQLのソケットの位置はどうやって指定する?
> 1. 引数
> 2. 環境変数 MYSQL_UNIX_PORT
> 3. デフォルト値 /tmp/mysql.sock
> の順でソケットの位置を見ていることがわかった。
だから、やっぱり、scheduler/config/database.ymlに
「socket: /var/run/mysqld/mysqld.sock」って追加すればいいのでは??
ううう。
自分的 FAQ (よくある質問とその回答)
今までやっていたことと同じような感じですが、
>4.WEBrick を再起動
これが気になります。
□WEBrick 起動コマンド
$ ruby ./script/server
http://localhost:3000/確認。
問題なく立ち上がってます。
もう一度
$ rake db:migrate
(in /home/b-tech01/scheduler)
rake aborted!
#42000 Access denied for user 'rails'@'localhost' to database 'scheduler_development'
あー やっとエラーの内容が変わりました!
たぶん、socketは通った(?)
次はMySQLのエラーが〜
MySQLの「#42000Access denied for user ''@'localhost' to database 'sample'」というエラー
>「grant」文で、作ったデータベースで、ユーザー「recipe3」に
>アクセス権減を与える訳ですが、僕はここの「recipe3@localhost;」という
>箇所をチュートリアルのままやっていたので「recipe@localhost;」としたままでした。
との一文・・・で、どう解決されたのだろう・・・
私もチュートリアルの言うままdatabase.ymlを
adapter: mysql
database: scheduler_development
username: rails
password:
host: localhost
encoding: utf8
socket: /var/run/mysqld/mysqld.sock
としたのですが、「'rails'@'localhost'」でエラーが出ているということは
アクセス権の問題?まだテーブル作ってませんが・・・
RubyOnRails を使ってみる 【第 2 回】 (続・RubyOnRails を使ってみる)
データベースの設定
↑ここに答えがありました!!!!
rails@localhost がscheduler_developmentとscheduler_testを
扱えるように下記Queryを実行
mysql> grant all on scheduler_development.* to rails@localhost;
Query OK, 0 rows affected (0.04 sec)
mysql> grant all on scheduler_test.* to rails@localhost;
Query OK, 0 rows affected (0.00 sec)
WEBrickをおまじないのように再起動
$ rake db:migrate
(in /home/b-tech01/scheduler)
== CreateSchedulers: migrating ================================================
-- create_table(:schedules)
-> 0.0647s
== CreateSchedulers: migrated (0.0651s) =======================================
mysql> show tables;
+---------------------------------+
| Tables_in_scheduler_development |
+---------------------------------+
| schedules |
| schema_info |
+---------------------------------+
2 rows in set (0.00 sec)
できたーーーーーーーーー!!
高級?なMySQLではちゃんとデータベースごとにユーザ設定をしてあげなければ
ならないということでした。
はぁ〜〜長かった・・・
0 件のコメント:
コメントを投稿