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

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

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

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

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

2853閲覧

MySQLサーバーへ接続

ryohasegawa

総合スコア437

MySQL

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

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

1クリップ

投稿2017/03/09 05:56

編集2017/03/09 05:57

MySQLのサーバー(192.168.12.15)へローカル内からMac(192.168.12.13)で接続したくデータベース側の設定でアクセスできるように設定しました。
grant all on login_php.* to mac@192.168.12.13 identified by 'パスワード';
そしてPHP側でも以下のコードを書きました。

php

1define('DSN', 'mysql:dbhost=192.168.12.15;dbname=login_php'); 2define('DB_USERNAME', 'mac'); 3define('DB_PASSWORD', 'パスワード');

これでアクセスできると思うんですが、アクセスしようとするとSQLSTATE[HY000] [2002] No such file or directoryとエラーが表示されます。
調べてみるとデータベースにアクセス出来ないときに出るエラーらしいので、接続ができていないと思います。

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

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

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

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

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

guest

回答2

0

Before

php

1define('DSN', 'mysql:dbhost=192.168.12.15;dbname=login_php');
After

php

1define('DSN', 'mysql:host=192.168.12.15;dbname=login_php');

http://php.net/manual/ja/ref.pdo-mysql.connection.php

host

データベースサーバーが存在するホスト名を指定します。

投稿2017/03/09 06:42

KiyoshiMotoki

総合スコア4791

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

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

ryohasegawa

2017/03/09 06:47

データベースサーバと同じサーバで建てた場合はdbhost=localhostで接続成功したので、外部からの接続時はhostにうるのですか?
KiyoshiMotoki

2017/03/09 06:54

質問する前に試してみてください。
ryohasegawa

2017/03/09 07:01

試してみた結果駄目でした。
ryohasegawa

2017/03/09 07:24

SQLSTATE[HY000] [2002] Connection refused というエラーが出ました。 でもエラーメッセージが変わりました。
KiyoshiMotoki

2017/03/09 07:57 編集

> でもエラーメッセージが変わりました。 Good. 定かではありませんが、ポート番号の食い違いではないかと予想します。 設定ファイルなどから MariaDB が待機しているポート番号を確認し、DSN を以下のように変更してみてください。  define('DSN', 'mysql:host=192.168.12.15;port=[MariaDB に設定されているポート];dbname=login_php'); 例えば設定ファイルに "port=3307" と記述してある場合、  define('DSN', 'mysql:host=192.168.12.15;port=3307;dbname=login_php'); となります。 https://mariadb.com/kb/ja/mycnf-mariadb/#linuxunix-での場所
guest

0

ベストアンサー

MySQLのポート番号を指定する必要があるのではないでしょうか。

PHP

1define('DSN', 'mysql:dbhost=192.168.12.15;dbname=login_php'); 23define('DSN', 'mysql:dbhost=192.168.12.15;dbname=login_php;port=3307');

※MySQLの設定でポート番号を3307にしている場合です。

投稿2017/03/09 06:39

Clor

総合スコア883

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

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

ryohasegawa

2017/03/09 06:49

やってみても駄目でした。 おそらく、データベースと同じサーバだと接続できるので、ポートの問題ではなさそうです。
Clor

2017/03/09 07:07

MySQLに設定されているポートがMySQLのサーバー(192.168.12.15)で開放されていない場合も 同様の現象が発生するかと思います。
ryohasegawa

2017/03/09 07:08

データベースサーバーでポートの開放をする必要があるということですか?
退会済みユーザー

退会済みユーザー

2017/03/09 07:19

横から失礼、ローカルのパソコンの場合、ウイルス対策ソフトなどがパーソナルファイアウォールを立てて接続を遮断していることもあるので点検してみてください。
ryohasegawa

2017/03/09 07:23

データベースサーバ(CentOS)にも接続するPC(MAC)にもウイルスソフトは入ってません。
退会済みユーザー

退会済みユーザー

2017/03/09 07:31

ウイルス対策ソフトを自分でインストールしていない、だから、ポートは塞がれていない、と断言できますか? だから点検しましょうと申し上げております。 MacOSユーザーじゃないからわからないけど、OS標準でファイアウォールを立てたりできるみたいなので、その可能性は消しておきましょうね。 Macでのポート開放について | 公式 Apple サポートコミュニティ <https://discussionsjapan.apple.com/thread/10149183?start=0&tstart=0> 接続先データベースはCentOSですか、6系ならば /etc/sysconfig/iptables を編集後に /etc/init.d/iptables restart で、7系ならば firewall-cmd で点検してはいかがでしょうか。
ryohasegawa

2017/03/09 07:43

CentOS側なんですが、SELinuxは無効化にしてあります。本体のファイアーウォールは確認します。
ryohasegawa

2017/03/09 07:47

firewall-cmd --list-ports --zone=publicで確認してみると、8080/tcpしか出ないので、もしかすると塞がれているかもしれません。でも、なぜ80番は通るんでしょう?
ryohasegawa

2017/03/09 08:00

ファイアーウォールに3307を追加してみたんですがダメでした。
退会済みユーザー

退会済みユーザー

2017/03/09 08:09 編集

CentOS側で立ち上がっているMySQLは本当に3307ポートで待ち受けているのでしょうか? MySQLのポート番号を調べる – Webサイトのデータ収集代行 <http://51flya.com/linux/416.html> 《こうやって1つずつ事実を積み上げて、問題ない、問題ないと確認する作業がとても大事です。》
ryohasegawa

2017/03/09 08:16

ありがとうございます。 とても助かりました。 調べてみると3306でした。解答の変更点のポートが3307だったのでこれでいいと思いこんでいました。 3306をファイアーウォールに登録すると、データベースにアクセスできました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問