質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

7944閲覧

【MySQL】正しいパスワードを入力しても、Access denied と出てしまうとき

aaachi

総合スコア69

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/13 07:24

編集2019/02/13 08:57

いつもお世話になっております。

MySQLで、グローバルサーバ上のPHPファイルにアクセスしようと、試みています。
正しいパスワードを入力しているにも関わらず、ページを開くと、

SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

のエラーが表示されてしまいます。原因を追究していますが、分からない状態です。
どなたか、詳しい方がいられたら、ご教示頂けますでしょうか。

######■パスワードが正しいと判断した証拠
コマンドプロンプト上で、違うパスワード、正しいパスワードを入力してみました。

$ mysql -u root -p Enter password: ************ //あえて違うパスワードを入れます ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) $ mysql -u root -p Enter password: ********* //正しいパスワードを入れます Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is **** Server version: 5.7.25-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>

######■使用スクリプト

php

1<?php 2$db['user'] = "root"; 3$db['pass'] = "password"; 4$db['dsn'] = "mysql:dbname=sample; host=127.0.0.1; port=3307; charset=utf8;"; 5?> 6 7//データベース接続 8try { 9 $db = new PDO($db['dsn'], $db['user'], $db['pass']); 10} catch (PDOException $e) { 11 exit('Could not connect: ' . $e->getMessage()); 12} 13 14$font = $_POST["font"]; 15$color = $_POST["color"]; 16$title = $_POST["title"]; 17$comment = $_POST["comment"]; 18$created = $_POST["created"]; 19 20// 文字コードを指定 21$stmt = $dbh->query("SET NAMES utf8"); 22 23// エラーが発生した際にエラーメッセージを表示 24if(!stmt){ 25 $info = $dbh ->errorInfo(); 26 27 exit($info[2]); 28 echo $info[2]; 29} 30 31// SQL文 32$sql = "INSERT INTO font_data ( 33 font, color, title, commment, created 34 ) values ( 35 'AGBookRounded-Bold','00ff00','happy','my day',NOW())"; 36 37// 文を実行する準備を行い、文オブジェクトを返す 38$stmt = $dbh -> prepare($sql); 39 40// SQLを実行する 41$stmt -> execute(array($font, $color, $title, $comment, $created)); 42 43// データベースとの接続を切断する 44$dbh = null; 45 46?> 47 48<!DOCTYPE html> 49<head> 50<meta charset="UTF-8"/> 51<title>php_db.php</title> 52</head> 53 54<body> 55 56</body> 57</html> 58?>

何卒、宜しくお願い致します。

###修正後コメント
port番号指定に誤りがあったことが分かりました。3307から3306にしたところ、

SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

のエラーは無くなりました。

SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (61)

現在は、こちらのエラーが表示されている状況です。

パスワードに間違いはない。
port番号は3306で間違いない
hostは127.0.0.1で間違いない
であることが、現在分かっている情報です。

また、コマンドプロント上、phpAdmin上、htdocs上では、正常にページが見れており、
グローバルサーバー上でエラーが発生する、ということを、再度念のため注記します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/13 07:33

port=3307を指定されていますが、MySQLインストール時やインストール後にデフォルトから変更されたのでしょうか。
aaachi

2019/02/13 07:53

回答頂き、ありがとうございます。 インストール時には変更していません。 不慣れなもので、前任の者のphpファイルをそのまま参考にしておりました。 3306がデフォルトということに、今調べて気が付きました。(ありがとうございます) 一旦、3307のままが良いか?と思い、 config.inc.php上で  $cfg['Servers'][$i]['Servers'] = '3307'; を追加しました。が、残念ながら、結果が変わりませんでした。
aaachi

2019/02/13 08:08

知識が足りず、大変申し訳ありませんが、 mysql> show variables like ‘port’; こちらのスクリプトは、コマンドプロンプトで入力するのでしょうか。 もしくは、phpAdmin>SQL上に入力するのでしょうか。 両方試してみましたが、構文エラーが出てしまったので、別の何かかな…と思いましたが、 分からないため、教えて頂けますと幸いです。
m.ts10806

2019/02/13 08:13

SQLが利用できればどちらでも良いはずです。 コマンドプロンプトでログインしたあとに打っても良いです。 もしかしたらお分かりかもしれませんが、mysql> は不要です。
aaachi

2019/02/13 08:24

ありがとうございます。 port 0 となっていました。portを3306に変更するために、調べてみようと思います。 念のため、下記に全文を載せます。 Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) --------------------------------- ---------------------------------------- abort-source-on-error FALSE auto-rehash TRUE auto-vertical-output FALSE binary-as-hex FALSE character-sets-dir (No default value) column-type-info FALSE comments FALSE compress FALSE debug-check FALSE debug-info FALSE database (No default value) default-character-set auto delimiter ; vertical FALSE force FALSE named-commands FALSE ignore-spaces FALSE init-command (No default value) local-infile FALSE no-beep FALSE host (No default value) html FALSE xml FALSE line-numbers TRUE unbuffered FALSE column-names TRUE sigint-ignore FALSE port 0 progress-reports TRUE prompt \N [\d]> quick FALSE raw FALSE reconnect TRUE shared-memory-base-name (No default value) socket (No default value) ssl FALSE ssl-ca (No default value) ssl-capath (No default value) ssl-cert (No default value) ssl-cipher (No default value) ssl-key (No default value) ssl-crl (No default value) ssl-crlpath (No default value) ssl-verify-server-cert FALSE table FALSE user (No default value) safe-updates FALSE i-am-a-dummy FALSE connect-timeout 0 max-allowed-packet 16777216 net-buffer-length 16384 select-limit 1000 max-join-size 1000000 secure-auth FALSE show-warnings FALSE plugin-dir (No default value) default-auth (No default value) binary-mode FALSE
m.ts10806

2019/02/13 08:30

phpのほうportの指定無しでもいけそうですね。たぶん。それか3306にかえるか。
aaachi

2019/02/13 08:31

rururu3様にもportでご指摘受け、ポート番号を確認しましたが、 3306でした。port 0ではなく、3306かもしれないです。
aaachi

2019/02/13 08:49

ありがとうございます。 仰る通り、port指定なしと、3306指定で、同じ挙動がみられました! port番号に気付けて、大変良かったです。 (進展の証拠ですが)別エラーがでたので、もう少し模索しようと思います。 SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (61)
guest

回答3

0

自己解決

とても初歩的なミスでした。
XAMPP Control Panelから開けるphpMyAdminを使用していました。

レンタルサーバ使用の場合は、
そのレンタルサーバが用意しているphpMyAdminを使わないとダメみたいです。(CPIの場合)

投稿2019/02/18 09:36

aaachi

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

MYSQLで一番頻出のバグであり、一番頻出の質問ですね、それは。
バージョンが変わった、サーバが変わったなどが起きると暗号解読の関係でパスワードが照合しなくなる現象であり、自分も何度も遭遇しました。

そして有名な解決法があります。

  1. セーフモードで中に入る
  2. パスワードがバグってるので、今のユーザーを削除して、もう一度新たなユーザーを作り、権限を設定する。
  3. もう一度入れるか確認する。

Linuxでのケースが多いですが、Windowsでもだいたい同じ手順となりますので、試してみればいかがでしょうか?
MySQL 5.7.16 でERROR 1045の対処法(windows)

投稿2019/02/13 07:40

FKM

総合スコア3608

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2019/02/13 07:56

コマンドプロンプトではログインできているようですよ。
aaachi

2019/02/13 08:10

回答ありがとうございます。 そうですね。コマンドプロンプトでは、ログインできています。 一応、影響があるかなと思い、試させて頂きました。ありがとうございます。
guest

0

localhost127.0.0.1は別物になるので、mysql -h 127.0.0.1 -u root -pで接続できるか確認してみたらいかがでしょう(またはphpの方をlocalhostにする)

投稿2019/02/13 07:34

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaachi

2019/02/13 07:47

回答頂きありがとうございます。 試させて頂きました。 mysql -h 127.0.0.1 -u root -p での接続でも、問題なく接続できました。 また、config.inc.php上も、$cfg['Servers'][$i]['host'] = '127.0.0.1'; となっております。
rururu3

2019/02/13 08:00

他の方の質問で指摘されてますが、portは3307でいいのでしょうか? mysql -u root -pだとportは3306でつなげに行くはずなのですが(3307でつながってるのでおかしいといえばおかしいのですが)
rururu3

2019/02/13 08:06

↑とおもってましたが自身で書いてる通りlocalhostで接続しに行った際portは関係なさそう
rururu3

2019/02/13 08:07

mysql -h 127.0.0.1 -u root -p -P 3307 で接続できるかを確認したほうが良さそうですね(ポート指定)
aaachi

2019/02/13 08:29

ありがとうございます。 試してみたところ、 3307では接続できず、3306でコマンドプロンプト上では接続できました。 (原因追求が進展し、感謝です。) $ mysql -h 127.0.0.1 -u root -p -P 3307 Enter password: ********* ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (10061 "Unknown error") $ mysql -h 127.0.0.1 -u root -p -P 3306 Enter password: ********* Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 54 Server version: 5.7.25-log MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> サーバ上になると、質問時と同様のエラーがでてしまうため、 もう少し模索してみようと思います。
rururu3

2019/02/13 08:32

となると $db['dsn'] = "mysql:dbname=sample; host=127.0.0.1; port=3307; charset=utf8;"; は $db['dsn'] = "mysql:dbname=sample; host=127.0.0.1; port=3306; charset=utf8;"; ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問