• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データベースに接続できない)

データベースに接続できない

このQ&Aのポイント
  • PHP5逆引き大全で学ぶ、データベースに接続できない問題の解決方法について
  • XAMPPを使用してMySQLに接続する際のエラーの原因と対処方法
  • config.phpの設定や文字コードの設定によるデータ取得の問題への対応方法

質問者が選んだベストアンサー

  • ベストアンサー
  • Kaone
  • ベストアンサー率60% (33/55)
回答No.4

mysql sample_db -u username だとどうですか?

noname#102630
質問者

お礼

自己解決ですが、ようやく接続できました。 // 接続設定 define("DIARY_DB_HOST", "localhost"); // ホスト名 define("DIARY_DB_USER", "root"); // ユーザー名 define("DIARY_DB_PASS", ""); // パスワード 接続設定を上記変更したところ接続できました。 Kaoneさんのご助言と書籍をもとにやってみました。 Kaoneさんのおかげです。 またよろしくお願いします。

noname#102630
質問者

補足

たびたびありがとうございます。 上記コマンドだと接続できませんでしたが、 C:\Documents and Settings\KKK>mysql -h localhost -u pma Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1112 Server version: 5.0.45-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. と接続できました。phpMyadminからホスト名、ユーザ名を 見ることができ、上記コマンドを打ちました。 MySQL自体をわかっていない自分なのですが、 おそらくdifineのところのユーザー名がちがいますね。 ここが問題なのでしょうか?

その他の回答 (3)

  • Kaone
  • ベストアンサー率60% (33/55)
回答No.3

まず確認ですが windows サーバにapache php mysql で全て同一サーバですよね まずWindowsであれば、mysqlをインストールしたフォルダ たとえば C:\>cd \mysql\bin に移動して、 mysql test 又は作成した mysql sample_dbでログインできると思います あと確認ですが、usernameというユーザは追加しているんですよね。 ※mysqlの作成コマンド grant all on *.* to username identified by 'password'; もし、特権ユーザ(root)でアクセスしているなら、パスワードは設定していますか? ※特権ユーザーのパスワード設定 set password for root=password('設定するパスワード'); これでもダメでかつこのmysqlコマンドもうまく動かないようであれば、windowsによってポートが制限されているのかも mysqlがデフォルトで起動しているのは3306ポートです。 ちなみにmysql_connectではなく、ODBCを使うなら管理ツールのデータソース(ODBC)の設定が必要です。(たしか・・ 最近WindowsでDBつかってないからうろ覚えですが 幸運を祈ってます。

noname#102630
質問者

補足

またまた回答ありがとうございます。 >windows サーバにapache php mysql で全て同一サーバですよね はい、1台のPCにXAMPPというソフトを入れました。 これですべての環境が整ってしまうようです。 >mysql test 又は作成した mysql sample_dbでログインできると思います mysql sample_dbでログインしようとしたところ「ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO」 またmysql -u usernameとコマンドを打ってみたところ ↓↓ C:\Documents and Settings\KKK>mysql -u username Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 904 Server version: 5.0.45-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. と出力されログインできているようなのですが・・・。 でも、そもそもmysql sample_dbでログインできないと駄目ですよね? なにかヒントがあったらまたご助言よろしくお願い致しますm(__)m

  • Kaone
  • ベストアンサー率60% (33/55)
回答No.2

データベースにユーザ権限が与えられていないようです。 データベースにログインして grant all on sample_db.* to username@localhost; を実行して、sample_db のデータベースにusername'@'localhostのアクセスを承認してください。

noname#102630
質問者

お礼

ちなみにsample_dbを作ったときのsqlをはっておきます。 -- -- データベース -- CREATE DATABASE IF NOT EXISTS sample_db; USE sample_db; -- -- テーブル -- CREATE TABLE diary_user ( name CHAR(32) NOT NULL, pass CHAR(32) NOT NULL, PRIMARY KEY (name) ); CREATE TABLE diary_auth ( uid CHAR(32) NOT NULL, sid CHAR(32) NOT NULL, life DATETIME NOT NULL, PRIMARY KEY (uid) ); CREATE TABLE diary_log ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, story TEXT NOT NULL, modify DATE NOT NULL, PRIMARY KEY (id,modify) ); -- -- 管理用データ -- INSERT INTO diary_user VALUES (md5('owner'),md5('admin')); -- -- テスト用データ -- INSERT INTO diary_log (title,story,modify) VALUES('テストタイトル','テストメッセージ',now());

noname#102630
質問者

補足

回答ありがとうございました。 やってみましたが、だめでした。同じエラーがでています。 でも、やり方はそういうことだと思います。 DOSで接続する方法がわからないのでphpMyadmin上から 上記SQLを実行してみました。エラーもでていないのですが これがよくなかったのでしょうか?

  • Kaone
  • ベストアンサー率60% (33/55)
回答No.1

相手がmysqlならODBCを使わないで@mysql_connect(DBNAME,DBUSERNAME,DBPASSWORD); で良いんじゃないでしょうか? 例  $dbc = @mysql_connect( "sample_db", "username", "password" ); $sql = "select * from table"; $r = @mysql_query( $sql, $dbc ); if( $r ){ $l = @mysql_fetch_array($r); } : :

noname#102630
質問者

お礼

ちなみにエラーメッセージです。 Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\xampp\htdocs\sample\chapter3\3-5\412.php on line 47 データベースに接続できません line 47には上記の MYSQL_CONNECT_HOST,MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS が記載されています。

noname#102630
質問者

補足

すみません、間違ったスクリプトで質問してしまいました。 // データベースに接続 $db = mysql_connect(MYSQL_CONNECT_HOST, MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS) or die("データベースに接続できません\n"); であってもdieの方のエラーメッセージが表示されてしまいます。 MYSQL_CONNECT_HOST,MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS のあたりが怪しいとにらんでいます。 パスワードとか設定した覚えがないです。

関連するQ&A