さくらインターネットのビジネスプロを使い、CakePHP 1.3.0 - RC2 Console のbakeでモデルを作成しようとしたところ、下記のようなエラーが発生。


Use Database Config: (default/test)
[default] > default

Warning: mysql_connect(): Access denied for user 'domain name'@'ip-address' (using password: YES) in /home/domain name/www/cakephp-cakephp1x-fc6802b/cake/libs/model/datasources/dbo/dbo_mysql.php on line 540

./app/database.phpを用意し、そこにはテーブルを用意した上で参照可能なDBの記載を行っています。

上記のip-addressの部分は、ビジネスプロで提供される3つのデータベースとは異なるIPでした。

エラーを解消する方法をご存知の方、いらっしゃいますでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/04/02 08:30:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:tdoi
    エラーから分かるのは、database.phpの設定がまずそうということくらいですね。
    意図せず、'ip-address'というサーバに接続に行っているようでうすので、このip-addressをgrepして、設定している箇所をまずは探してみてはどうですか?

    念のために確認ですが、./app/database.phpは./app/config/database.phpのtypoですよね?
  • id:o9bo
    コメント、ありがとうございます!

    ./app/database.phpはtypoです。。失礼しました!汲み取っていただいて、ありがとうございます。(苦笑

    以下のコマンドで /home/domain name/www/cakephp-cakephp1x-fc6802b/ 配下を検索してみましたが見つかりませんでした。

    find . -type f -name "*.*" | xargs grep "ip-address"

    さくらのビジネスプロで割り当てられた3つのDBサーバーのIPとは異なる謎のIPが返ってくるんですよねー。。

    一応、打ち間違いの可能性も考慮して、何度も時間を空けて設定を見直してみているのですが、同じにしか見えないし・・・
    ip-addressのaaa.bbb.ccc.dddのaaa部分だけで検索してみても出てきませんでした・・・

  • id:tdoi
    bakeはcakePHPのバージョンが上がると色々と不具合もあるので、bakeのバグの可能性もありますけどね。
    -appとかで、appディレクトリを指定してみると、結果変わったりしますか?
  • id:o9bo
    確かに調べたら、1.2.6とかでappディレクトリを指定しないと動かないというのもあったみたいですね。

    試してみましたが、1.3.0では結果に変化はありませんでした。。

    バグにしても、今ひとつ釈然としないです。。どこの何を見に行っているんだか。。
  • id:tdoi
    他の環境だと起きないんですよね?
    僕も手元のWindows環境では確認しましたが、そのようなエラーは出ませんね。

    原因は不明ですが、もし、僕が同じ状況で試すとすれば、

    testの方を選択してみてどうなるかとか、

    var $dummy = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => 'password',
    'database' => 'database_name',
    'prefix' => '',
    );

    見たいなのを、database.phpに追記して、dummyが選択できるようになっているかで、正しく、database.phpが読まれているかなんかを確認するとかですかね。

    あまり、参考にならなくて済みません。
  • id:rouge_2008
    以下のエラーで'domain name'@'ip-address'のホスト名部分が違うのは関係ないと思われます。
    ※おそらくo9boさんが利用しているサーバーのIPアドレスではないかと思うのですが・・・

    Warning: mysql_connect(): Access denied for user 'domain name'@'ip-address' (using password: YES) in /home/domain name/www/cakephp-cakephp1x-fc6802b/cake/libs/model/datasources/dbo/dbo_mysql.php on line 540


    設定されているアカウント名あるいはパスワードが違うのが原因ですので、loginとpasswordを再度確認してみてください。
    ※表示されている'domain name'@'ip-address'の'domain name'に間違いがないのでしたら、パスワードの方が間違っているのだと思います。
    アカウント・パスワードともに間違いがなくて、現在、DBサーバーのIPを設定しているのでしたら、ホスト名(「mysql**.db.sakura.ne.jp」の方)で設定して試してみてください。

    それでも駄目なら、サポートに問い合わせた方が良いと思います。
    おそらく追加されているDBアカウントの設定が問題が少しあります。
    ※さくらではドメイン追加時にDBのアカウントが自動作成されるのですか?
  • id:rouge_2008
    もう少し詳しく説明します。

    database.phpで「host」に「localhost」あるいは「127.0.0.1」以外を設定した場合、上記のようなエラーが発生する場合があります。

    発生条件として現在分かっているのは、

    1.「host」に「localhost」あるいは「127.0.0.1」以外を設定した場合
    2.エラーにある「'domain name'@'ip-address'」という条件のDBユーザーが作成されていない
    3.エラーにある「'domain name'@'ip-address'」のホスト部分が一致する他のDBユーザーは存在する

    上記1~3の条件すべてがそろっている場合に発生するようです。
    ※上記条件がそろっている場合、Windowsでも発生します。
    ちなみに、1と2に合致して3に合致しない場合は、以下のようなエラーになります。

    Warning: mysql_connect(): Host 'コンピュータ名' is not allowed to connect to this My
    SQL server in (略)\cake\libs\model\datasources\dbo\dbo_
    mysql.php on line 540


    ・・・という理由ですので、DBユーザー作成時にホストを指定する権限がないユーザー側では対処できないと思います。
    サポートに事情を説明して、エラーにある「'domain name'@'ip-address'」のホスト「ip-address」のユーザー「domain name」を作成してもらうか、ローカルで構築してからさくらのサーバーにアップするか、どちらか好きな方法で対処するしかないかもしれません。


    ※Windowsで1.3.0のbakeはまだ不具合があるようです。
    上記の部分は問題ありませんが、その後手順を進めるとNoticeと『Could not find template for model』というエラーが出て、作成されるモデル.phpの中身が空になります。
    これが原因でコントローラーの作成もエラーになるようです。
    tdoiさんは問題なかったでしょうか・・・?

    FreeBSDではありませんが、linux(ubuntu)では大丈夫でした。
    もしWinでcake bakeを利用する場合は、バージョン1.2.6を使用してみてください。
  • id:o9bo
    > tdoiさん

    ありがとうございます!

    他の環境は検証していませんです。
    残念ながら、テストも同じでしたねー。


    > rouge_2008

    ありがとうございます!
    詳細なご説明で、よく理解できました。

    ご説明いただいた内容で、ほぼ決まりっぽいですね。

    自分で直せるレベルなら、いじって使おうかと思ったのですが、結構問題多そうなので、おとなしくstableな最新のバージョンを利用するか、ローカルで構築するかで進めたいと思います。


    お二方とも、ほんとうにありがとうございましたー!
  • id:rouge_2008
    linuxでは1.3.0-RC2でもbakeが一通り動作しましたが、Stable版を使用する方が無難かもしれませんね。
    ※Stable版でも質問の現象は発生しますので、bakeを利用したい場合は、ローカルで構築する必要があると思います。


    それから、うっかり書き損じたので追記します。
    厳密には1の条件は以下のようになります。

    1.「host」に「localhost」あるいは「127.0.0.1」、あるいはIPが127.0.0.1以外のサーバーのホスト名を設定した場合
  • id:rouge_2008
    何回もすみません。
    勘違いしている部分もあるかもしれませんが、新たに分かった事を追記します。

    条件に合致する場合、mysql_connectにより接続する基本的なスクリプトでも同じエラーが発生しました。
    CakePHPのbakeに限らず発生しますので、PHPまたはMySQLの仕様だと思います。
    ホストやユーザーなどをdatabase.phpと同じ設定にして、MySQLに接続するスクリプトをブラウザで実行した場合、正常に接続できますか?
    DNS障害も考えられると思いますし、ブラウザからも接続できないようでしたら、やはり一度サポートに連絡してみた方がいいと思います。


    ※ちなみに返って来るエラーの「'domain name'@'ip-address'」には数パターンあるようです。

    1.「'ユーザー名'@'接続元サーバーのIPアドレス'」
    ※DNS参照が出来ない場合に(?)上記のようにIPアドレスになる可能性があります。(こちらはローカル環境での動作テストですので、hostsファイルに記述がない場合に上記のようにIPアドレスになりました。)

    2.「'ユーザー名'@'接続元サーバーのホスト名'」
    ※一つのIPアドレスに対してホストが複数設定されている場合、一番最初に設定されているホストになるようです。

    3.「'ユーザー名'@'接続元サーバーのコンピュータ名'」
    こちらはまだ良く分かっていませんが、自サーバーに「localhost」や「127.0.0.1」以外で接続した場合、なおかつそのIPとホストがhostsに登録されていない場合(?)にコンピュータ名になるようです。


    まだ分かっていない部分もありますが、動作確認する場合の参考にしてください。
  • id:tdoi
    > rouge_2008さん
    僕が大ボケかましていましたね。
    ip-addressは接続元サーバ、つまり、WebサーバのIPですよね。

    あと、僕の環境ではWindows上でModelのbakeはできましたよ。それ以上は試していないのですが。

    > o9boさん
    ちょっとさくらのサイトのビジネスプロの説明を読んだのですが、

    「上記のip-addressの部分は、ビジネスプロで提供される3つのデータベースとは異なるIPでした。」

    とのことですが、3つというのは、1つのMySQLサーバに対して、3つデータベースを作成できるということですよね?これらは作成しましたか?

    以前に、さくらを利用した際の記憶なのでうろ覚えですが、さくらインターネットの管理コントロールパネルから、データベースの設定みたいなのから作成できた気がします。その際に、そのデータベースにアクセスするユーザも作成できるはずです。

    まずはここを確認してみてください。


    で、さくらの提供するサービスの構成がどうなっているか分からないのですが、WebサーバとMySQLサーバは同一ホストで動作していませんか?

    仮にWebサーバのIPが192.168.0.39だったとして、同一ホストでMySQLが動作している場合に、
    接続時に、localhostを指定した場合と、192.168.0.39を指定した場合とでは挙動が異なります。正確に言うと認証が変わります。

    MySQLは、ユーザ名+接続元ホストに対して認証を行うので、

    userはlocalhostからは許可するが、ネットワーク経由のアクセスは許可しない

    という設定になっていれば、localhostとして接続すれば接続できるが、同一ホストを指すものだとしても、192.168.0.39と指定するとネットワーク経由とみなされて、アクセスできません。


    と、ここまで書いて気になったのですが、デフォルトの状態でサイトトップにアクセスすると、データベースに接続できるかなどを表示してくれると思いますが、そこもひょっとしてエラーになっていませんか?
  • id:rouge_2008
    > tdoiさん

    1.3.0-RC2でbakeできたのですか?
    こちらは、1.2.6ではbake出来るのですが、1.3.0-RC2ではエラーが出力されて空のモデルファイルが作成されます。
    ※クラスの作成が出来ていないので、その後のコントローラーの作成等にも失敗します。
    こちらの環境の問題なのでしょうか・・・
    とりあえず、私の環境だけかもしれませんので、必要になるまではこのままにして置こうと思います。
    正式リリースでは大丈夫になっているかもしれませんから・・・



    後、o9boさんへの確認に割り込む形になってすみませんが、さくらのビジネスプロの場合、サーバー3つに対してデータベースが各3個なのではなく、使用できるデータベースが全部で3個なのだと思います。



    それから、WEBサーバーとデータベースサーバーは別サーバーになっているようです。
    http://support.sakura.ad.jp/support/manual/rs/db_make.html
    --------------------------------------------------
    データベース サーバ :
    データベースサーバのホスト名です。
    さくらのレンタルサーバでは、ウェブなどの主要なサービス提供サーバとは別に、データベース専用の外部サーバをご用意しています。
    ---------------------------------------------------



    > o9boさん

    ユーザーの権限はどうなっているでしょうか?
    記載がないので分かりませんが、初期ユーザーとは別のユーザーでデータベースにアクセスしたい場合は、追加したユーザーに管理者権限を付与してから、そのユーザーでコントロールパネルにログインしてデータベースを作成するといいのかもしれません。
    tdoiさんが書かれているように、データベースにアクセス可能なユーザーの設定が出来ない場合は、上記手順を試してみてください。

    ・ユーザーの権限
    http://support.sakura.ad.jp/support/manual/rs/setuser_bs_a.shtml

    ・スタートアップガイド目次
    http://support.sakura.ad.jp/support/manual/start/bz_index.html

    ・管理者ユーザーの設定
    http://support.sakura.ad.jp/support/manual/start/bz_startup_3.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません