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

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

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

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

データベース

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

MariaDB

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

Q&A

解決済

1回答

2814閲覧

データベース(MariaDB)へWebサーバ(PHP PDO)からアクセスできない

ryohasegawa

総合スコア437

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

データベース

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

MariaDB

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

0グッド

1クリップ

投稿2018/03/13 09:28

編集2018/03/13 09:41

データベースサーバ(MariaDB)へMacで開いている簡易サーバからアクセスしたいのですが、"SQLSTATE[HY000] [2002] No such file or directory"が発生してしまいます。
このサイトも見てみたのですが、同じパソコンで動いているわけではないので、この方法ではできないと思います。
コードは以下の通りです。

php

1<?php 2define('DSN', 'mysql:dbhost=192.168.3.101;dbname=test'); 3define('DB_USERNAME', 'mac'); 4define('DB_PASSWORD', '********'); 5 6 7class Model { 8 protected $db; 9 10 public function __construct() { 11 try { 12 $this->db = new \PDO(DSN, DB_USERNAME, DB_PASSWORD); 13 } catch (\PDOException $e) { 14 echo $e->getMessage(); 15 exit; 16 } 17 } 18 19 public function create($values) { 20 $stmt = $this->db->prepare("insert into users (email, password, created, modified) values (:email, :password, now(), now())"); 21 $res = $stmt->execute([ 22 ':email' => $values['email'], 23 ':password' => password_hash($values['password'], PASSWORD_DEFAULT) 24 ]); 25 } 26 27 $userModel = new \MyApp\Model\User(); 28 $userModel->create([ 29 'email' => $_POST['email'], 30 'password' => $_POST['password'] 31 ]); 32 33 34}

define('DSN', 'mysql:dbhost=192.168.3.101;dbname=test');のところをdefine('DSN', 'mysql:dbhost=192.168.3.101;dbname=test;port=3306');とポートを指定してみたりもしてみましたがだめでした。

データベースサーバには、macからアクセスする用のユーザは作ってあるので問題はないと思います。

MariaDB [(none)]> select Host, User, Password from mysql.user; +-------------+--------+-------------------------------------------+ | Host | User | Password | +-------------+--------+-------------------------------------------+ | localhost | root | *2076BF19746A0ADFADD62DF22FFD41B906F15090 | | 127.0.0.1 | root | *2076BF19746A0ADFADD62DF22FFD41B906F15090 | | ::1 | root | *2076BF19746A0ADFADD62DF22FFD41B906F15090 | | 192.168.3.2 | mac | *2076BF19746A0ADFADD62DF22FFD41B906F15090 | | localhost | dbuser | *2076BF19746A0ADFADD62DF22FFD41B906F15090 | +-------------+--------+-------------------------------------------+

データベースサーバのIPは192.168.3.101
macのIPは192.168.3.2
です。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/03/13 09:59

逆に過去にその操作をローカルサーバーに向けて設定したのでは?
guest

回答1

0

自己解決

define('DSN', 'mysql:dbhost=192.168.3.101;dbname=test');

define('DSN', 'mysql:host=192.168.3.101;dbname=test');
にしたら解決できました。

投稿2018/03/13 10:15

ryohasegawa

総合スコア437

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問