• 締切済み

お世話になります。

お世話になります。 ○PHPでMySQL 接続テスト ○環境 ・サーバー ホスト名:linux.nikoniko.com(仮名) OS:Centos 5.5 PHP: 5.3.3 MySQL: 5.1.49 ・クライアント OS:Windows7(pro) 各ツール:XAMPP 1.7.3 Eclipse IDE for PHP Developers:1.2.2.20100216-1730 ○行いたいこと phpでDB接続のテストを行っています。 php用にMySQLのユーザーを作成し、クライアントからphpでDB接続できるか確認のテストです。 ○行ったこと 以下SQL文で GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION MySQLのユーザーcentosを作成しました。 作成した「centos」のユーザーでphpMyAdmin とサーバー上のコマンドで「centos」でログインは出来たのですが 以下のphpコードでホスト名とユーザーを指定し接続を試みると以下のエラーで接続できません。 ・phpコード <?php $mysql_con = mysql_connect("linux.nikoniko.com:3306","centos","centos"); if ($mysql_con == false){ print "DB接続エラー!"; } else { print "DB接続OK!"; } ?> ・実行エラー Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'centos'@'192.168.1.10' (using password: YES) in C:\xampp\htdocs\PHP_Lesson\mysql_connect\dbconnect.php on line 3 上記phpコードでユーザー名を「root」にすると接続はできます。 新たにMySQLのユーザーを作成(ここではcentos)して上記phpコードで接続できるようにするにはどうすればいいのでしょうか。 宜しくお願いします。

  • MySQL
  • 回答数2
  • ありがとう数4

みんなの回答

回答No.2

こんにちは。 >PHPはクライアント(WIndows)、MySQLは(Centos)で動かしていますので >別PCです・・・ あらそ・・・、とんだ早とちりで失礼しました・・・。 サーバーのIPアドレスは、192.168.1.10でいいんですか? エラーメッセージから判断するに、ホストの名前解決ができてないように見えます。 mysqladmin flush-hostsを実行して内部DNSキャッシュをリセットしても駄目な場合、 1. DNSサーバーの問題を修正。 2. GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION の代わりに GRANT ALL PRIVILEGES ON *.* TO centos@192.168.1.10 IDENTIFIED BY 'centos' WITH GRANT OPTION にする。 3. --skip-name-resolveオプションでmysqldを開始する。 4. --skip-host-cacheオプションでmysqldを開始する。 などなどありますが・・・。 個人的にはIP指定にするか「%」でやっちゃうか、がいいかと思います。 セキュリティを考慮するなら「%」はお勧めしませんが・・・。

回答No.1

こんにちは。 PHPからMySQLに接続するときに、同じマシンで動いているので、 $mysql_con = mysql_connect("linux.nikoniko.com:3306","centos","centos"); ではなく、 $mysql_con = mysql_connect("localhost:3306","centos","centos"); となりますね。 という事は、 GRANT ALL PRIVILEGES ON *.* TO centos@linux.nikoniko.com IDENTIFIED BY 'centos' WITH GRANT OPTION だけでは不十分だという事がわかると思います・・・。 centos@localhost を作るか、面倒臭かったら、 centos@% にしないと駄目でしょう・・・。

tomotomody
質問者

お礼

taka451213 さん。こんばんは。 アドバイスありがとうございます。 >PHPからMySQLに接続するときに、同じマシンで動いているので、 ごめんなさい。PHPはクライアント(WIndows)、MySQLは(Centos)で動かしていますので 別PCです・・・

関連するQ&A

  • eclipseで実行したときだけエラーが発生する

    xampp1.6.6a + eclipse(zendPDT) で、PHP + mysql のコーディングをしたいと思っています。 一通りのセットアップをした後、下記のようなコードを組んで実行したところ、 ブラウザから直接アクセス(http://localhost/~ のURL)すると「接続成功!」と出るのですが、 eclipseから実行するとエラーが出てしまいます。 <?php include_once ("teisuu.php"); $my_Con = mysql_connect($db_host,$db_user,$db_pass); if ($my_Con == false){ die("MYSQLの接続に失敗しました。"); }else{ echo "接続成功!"; } ?> エラー: Fatal error: Call to undefined function mysql_connect() eclipse側で設定が何か足らないのだろうと思いますが、 どのようなことが考えられるでしょうか。

    • ベストアンサー
    • PHP
  • php→mysqlへの接続が出来ない(初心者)

    レンタルサーバーのMySQLへPHPから接続したいのですが、うまくいきません。 ソースコードは以下の通りで、 ========ソースコード================== <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> (↑head内記述) <?php $my_con = mysql_connect("mysql5.heteml.jp","User","Pass"); if ($my_con == false) { die("失敗"); }else{ echo "成功!!"; } ?> ================================ 結果、以下のエラー表示が出ます。 =========エラー文=================== Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'mysql5.heteml.jp' (10060) in C:\xampp\htdocs\wakuphp\test-connect.php on line 9 失敗 ================================ ちなみに、ソースコードの9行目は 『$my_con = mysql_connect("mysql5.heteml.jp","User","Pass");』で、 phpMyAdmin上で言語設定は"Japanese(ja-euc)"です。 原因が解らず困っております。有識者の方いらっしゃいましたら宜しくお願いします!

    • ベストアンサー
    • PHP
  • PHPからMySQLに接続することができません。

    PHPからMySQLに接続することができません。 解決方法をご存じの方は教えていただけないでしょうか。 PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) 環境 OS:CentOS 5.3 DB:Mysql 5.0.67(ソースからインストール) Web:Apache PHPのソースの一部を以下に記します。   $db_host = 'localhost';//DB_NAME;   $db_user = 'user';//DB_USER;   $db_pass = 'pass';//DB_PASS;   $db = mysql_connect($db_host,$db_user,$db_pass); 以下の方法も試したのですが、エラーメッセージは変わりませんでした。   $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd") 端末のコマンドからMySQLへの接続は成功します。 ホスト名、ユーザー名、パスワードも上記と同一のものです。   $ /usr/local/mysql/bin/mysql -h localhost -u user -p   Enter password:pass 以上です。宜しくお願いします。

    • 締切済み
    • PHP
  • インクルードによる不具合

    PHP初心者です。 以下2つのファイルを使って簡単な接続テストを行ってから徐々に 目的のものを作り上げていこうとしたのですが、どうにもうまく動作しません。(2つは同一ディレクトリにある) ・「mysql.php」:DB接続とSQLの発行 ・「test.php」:ブラウザ出力(本体:mysql.php呼び出し元) 実行すると「*** DB/SQLテスト ***」のみブラウザに出力されるため、試しに「mysql.php」で行うDB接続とSQL発行をすべてtest.phpに直接書いてインクルードせず単体で実行したところ、目的の結果が表示されました。 なので問題はインクルード文にあるのだと思うのですが検討がつきません。 どなたかお力をお貸し下さい。 ちなみに以下のコードは参考にしたテキストの例題をもとに見やすくするため余分な処理やエラー処理などを省いたものです。 ■mysql.php <?php class MySQL{ var $m_con; var $m_rows = 0; function MySQL(){ $this->m_con = mysql_connect("ホスト名", "ユーザ名", "パスワード"); mysql_select_db("データベース名", $this->m_con); } function query($sql){ $this->m_rows = mysql_query($sql, $this->m_con); return $this->m_rows; } } ?> ■test.php <html> <head> <meta http-equive="Content-type" content="text/html; charset=utf-8"> <title>SQLtest</title> </head> <body> *** DB/SQLテスト ***<br> <?php include("mysql.php"); $mysql = new MySQL; $sql = "SELECT * FROM staff"; $mysql->query($sql); while($row = mysql_fetch_array($this->m_rows)){ echo $row["id"]; echo $row["name"]; echo "<br>"; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 同じサーバーで、異なるデータベースを同時に開くことはできますか?

    1.タイトルの通り、同時に開くことができますでしょうか? 日本PHPユーザー会ホームページでは以下の方法でできるとの回答があります。 $con1 = mysql_connect(localhost, user_id , pass); $con2 = mysql_connect(localhost, user_id , pass); mysql_select_db("db1",$con1); mysql_select_db("db2",$con2); ======================================== db1 user_table user_id(int),user_name(var) ========================================== db2 main_table main_id(int),user_id(int) ======================================== $sql_user_name = "SELECT user_name FROM user"; $result_user = mysql_query($sql_user_name,$con1); $row_user = mysql_fetch_array($result_user); echo $row_user[user_name]; のようにやっても mysql_fetch_array()がでます。 mysql_queryは最後の接続を活かすとなっているのでこの部分の書き方を教えてください。 2.できたとしてリレーションを行うことができますでしょうか? つまり $sql_user_name = "SELECT user_name FROM db1.user_table,db2.main_table WHERE db1.user_table.user_id = db2.main_table.user_id" というようなことはできますでしょうか? 長文で申し訳ありませんが、どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • MySQL, PHP をインストール後、データベースにアクセスできません。

    自宅で使っている Windows Vista に ・Apache 2.2.8 ・PHP 5.2.6 ・MySQL 5.0.45 ・PHPMyAdmin 2.11.4 をインストールしました。 それぞれがインストールされたことは確認でき、 PHPMyAdmin でテーブルを作成、インポートなども出来たのですが、 PHP からデータベースにアクセスできずに困っています。 phpinfo(); などは表示されるのですが、 いざデータベースにアクセスしようとすると出来ず、PHPのエラーも表示されません。 $host = 'localhost'; $db_name = 'hoge'; $user = 'root'; $pass = '***'; $con = mysql_connect($host, $user, $pass) or die ("cannot connect DB"); mysql_select_db($db_name,$con) or die ("cannot select DB"); という記述以降に書かれた部分は実行されず、それ以前の部分のみ表示されます。 error_reporting(E_ALL); を記述していても何も表示されないため、原因すら分かりません。 何か心当たりはありますでしょうか?

    • ベストアンサー
    • PHP
  • FC4でmysqlを使用して PEAR DB への接続ができない

    FC4に、yumでPHP5.0.4、php-pear-5.0.4、php-mysql-5.0.4、(mysql-4.1.20,mysql-server-4.1.20)をインストールしました。 <?php $con = mysql_connect("localhost","taro","password") or die("接続出来ません"); print "接続しました"; mysql_close($con); ?> を実行すると、「接続しました」と出ます。ところが、 <HTML> <HEAD><TITLE>PHP test</TITLE></HEAD> <BODY> <?php require_once("DB.php"); $dbUser="taro"; $dbPass="password"; $dbHost="localhost"; $dbName="testdb"; $dbType="mysql"; $dsn="$dbType://$dbUser:$dbPass:@$dbHost/$dbName"; $conn = DB::connect($dsn); if(DB::isError($conn)){ die($conn->getMessage()); } print ('DBに接続しました'); $conn->disconnect(); ?> </BODY></HTML> を実行すると、DB Error: connect failed と出て、接続できません。 php.iniは、 include_path = ".:/usr/share/pear:/php/includes" としてあり、 [root@FC4 ~]# ls -l /usr/share/pear/ で調べても drwxr-xr-x 2 root root 4096 5月 27 18:06 DB -rw-r--r-- 1 root root 38937 11月 8 2005 DB.php となっています。 パスの切り方が間違っているでしょうか? どのようにすれば接続できるでしょうか?よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • データベースに接続できない

    『PHP5逆引き大全500の極意』にあるサンプルスクリプトで PHPとMYSQLと学んでいます。 XAMPPもインストールし、スタンドアロンでMysqlを操作しようと しています。 しかし、どのサンプルスクリプトをいじっても接続できません。 require("config.php"); header("Content-Type: text/plain; charset=EUC-JP"); $db = odbc_connect(ODBC_CONNECT_DSN, ODBC_CONNECT_USER, ODBC_CONNECT_PASS) or die("データソースに接続できません!\n"); でエラーがでています。 ちなみにconfig.phpの内容 // DSN define("ODBC_CONNECT_DSN", "DSN=sample_db;"); // ユーザー名 define("ODBC_CONNECT_USER", "username"); // パスワード define("ODBC_CONNECT_PASS", "password"); // テーブル名 define("ODBC_TABLE_NAME", "php500"); となっています。SQL文を実行し、テーブルを作りましたが、 上手く言っているかどうか・・・。 文字コードをちゃんと設定していないせいか、????????のような データがカラムに入っています。 サンプルスクリプト上、データベースが自動作成されるスクリプトも あるのですが・・・。 1.useename、userpassの設定 2.phpMyAdminでデータベースを作成する方法 3.データベース作成時の文字コードの設定。utf?sjis? についてヒント頂けたら幸いです。

    • ベストアンサー
    • MySQL
  • classについて

    $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; $con = mysql_connect ($server, $user, $pass); mysql_select_db ($database, $con); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($result = mysql_fetch_array ($rs, MYSQL_ASSOC)) { echo $result[hoge]; } 上記と同じことを下記のようなクラスにして db.php class db { $server = "localhost"; $database = "hoge"; $user = "user"; $pass = "pass"; function __construct() { $this->con = mysql_connect ($this->server, $this->user, $this->pass); mysql_select_db ($this->db, $this->con); } function query($sql){ $rs = mysql_query ($sql); return mysql_fetch_array ($rs, MYSQL_ASSOC); } hoge.php $db = new db(); $sql = "SELECT * "; $sql.= "FROM `table` "; while ($db->query($sql)) { echo $result[hoge]; } のようにしたのですが、うまくいきません。 function query($sql){ $rs = mysql_query ($sql); $result = mysql_fetch_array ($rs, MYSQL_ASSOC); } とすると一行はとれるのですが、複数行とるにはどうしたらいいのでしょうか・・・ どうかよろしくお願いします。

    • 締切済み
    • PHP