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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

データベース

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

Q&A

解決済

4回答

28977閲覧

SQLSTATE[HY000] [2002] No such file or directory

ryohasegawa

総合スコア437

MySQL

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

データベース

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

0グッド

1クリップ

投稿2016/12/26 14:17

編集2016/12/26 17:35

phpでドットインストールの動画を見て、下のコードを書きました。

php

1<?php 2 3define('DB_DATABASE', 'test_db'); //データベース指定 4define('DB_USERNAME', 'dbuser'); //データベースユーザ 5define('DB_PASSWORD', '********'); //データベースパスワード 6define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' .DB_DATABASE); //データベースに接続するための文字列 7 8try { 9 //connect 10 $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); 11 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 13 //insert 14 $db->exec("insert into users (name, score) values ('ryo', '55')"); 15 echo "user added!"; 16 17 //disconnect 18 $db = null; 19}catch (PDOException $e){ 20 echo $e->getMessage(); 21 exit; 22}

このindex.phpにアクセスすると、データベースに情報を追加するというシンプルなコードです。
ブラウザから接続すると、SQLSTATE[HY000] [2002] No such file or directoryとエラーが出ます。
エラーの内容は、そのような(接続した)ファイルは見つからないと言われました。
原因として思ったのが、このデータベースのアクセス権をPHPが持っていないことかな?と思いました。
でも、解決方法がわかりません。原因がそれなのかもわかりません。教えて下さい。

OS Mac10.12.2
MySQL 5.7.16
PHP 7.0.14

追記

sudo chmod 777 /usr/local/var/mysql/

ですべてのプログラム、ユーザがmysqlにアクセスできるようにパーミッションを変更したのですが、うまくできなかったので、データベースのアクセス権をPHPが持っていないことが原因ではないと思います。
やり方がちがっていたら、教えてください。

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

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

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

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

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

sleepsheep

2016/12/26 17:19

OS,PHP,MySQLのバージョンなど、動作環境も記載したほうが良いと思います。
ryohasegawa

2016/12/26 17:31

ありがとうございます。追記させていただきます。
退会済みユーザー

退会済みユーザー

2016/12/26 23:22

Rオプションつけてパーミッション変更は
ryohasegawa

2016/12/26 23:31

Rオプション?
guest

回答4

0

ベストアンサー

  1. php.iniのmysql.default_socketにパスを指定する。
  2. apacheを再起動する。
  3. mysql.server startをする。
  4. ブラウザからlocalhostと127.0.0.1の両方から接続してみる。

これらを試してみてはいかがでしょうか。

投稿2016/12/26 23:20

編集2016/12/26 23:22
s8_chu

総合スコア14731

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

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

ryohasegawa

2016/12/26 23:24

1,のパス通しはできています。2、のApacheは導入してません。PHPでサーバ起動させているので
s8_chu

2016/12/26 23:40

3, 4を試した結果はどうでしたか?
ryohasegawa

2016/12/26 23:47

3,の結果は、 hasegawaryou-no-MacBook-Air:php_db_lesson hasegawaryou$ mysql.server start Starting MySQL SUCCESS! です
ryohasegawa

2016/12/26 23:50

4の結果は、 127.0.0.1で接続するとIt works!と表示されまそた。 127.0.0.1:8000で接続すると接続できません。
s8_chu

2016/12/26 23:54

localhostで接続するとどうでしょうか
ryohasegawa

2016/12/27 00:01

It works!と表示します。 :8000をつけると何も表示しないです。
s8_chu

2016/12/27 00:17

define('PDO_DSN', 'mysql:dbname=' . DB_DATABASE . ';host=127.0.0.1;charset=utf8'); としてアクセスしてみてください。
ryohasegawa

2016/12/27 00:35

接続できました!! ぜひ、何がだめだったか、どうしたかを説明いただけるとありがたいです。
s8_chu

2016/12/27 00:46 編集

確認したいのですが、 define('PDO_DSN', 'mysql:dbname=' . DB_DATABASE . ';dbhost=127.0.0.1;charset=utf8'); としたときと define('PDO_DSN', 'mysql:dbname=' . DB_DATABASE . ';host=localhost;charset=utf8'); としたときには接続ができますか?
ryohasegawa

2016/12/27 01:27

できないです
s8_chu

2016/12/27 01:37

どちらでもできなかったですか?
ryohasegawa

2016/12/27 08:53

はい。 define('PDO_DSN', 'mysql:dbname=' . DB_DATABASE . ';host=127.0.0.1;charset=utf8'); でないとうまく接続できません。
s8_chu

2016/12/27 09:15

確認していただきありがとうございます。 推測ですが、hostの部分をdbhostとしていたことと、localhostでMySQLに接続するときの方法がどこかの過程で無効になっているため、127.0.0.1を使うと問題なく実行されたのではないかと。
ryohasegawa

2016/12/27 09:17

127.0.0.1というのは、MySQLのIPでしょうか?
s8_chu

2016/12/27 09:24

localhostのIPアドレスです。
ryohasegawa

2016/12/27 09:27

パソコンのということですか? localhost=127.0.0.1ということですか?
s8_chu

2016/12/27 09:36

その認識で間違いないです。 127.0.0.1にはlocalhostというホスト名が設定されていて、そのコンピュータ自身を表します。
ryohasegawa

2016/12/27 09:40

少しちがうかもしれませんが、DNSのドメインみたいなもんですね?
s8_chu

2016/12/27 10:01

DNSのドメインみたいなものがどういうものか理解できなかったのですが、通常はhostsというIPアドレスとホスト名を関連付けするファイルで127.0.0.1とlocalhostを関連付けしているので、DNSサーバでの設定は不要だと思います。
ryohasegawa

2016/12/27 10:18

なるほどです。 詳しく説明ありがとうございました。
guest

0

bash

1mysql.server status

の結果はどうなりますか?

投稿2016/12/26 20:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ryohasegawa

2016/12/26 23:30

hasegawaryou-no-MacBook-Air:php_db_lesson hasegawaryou$ mysql.server start Starting MySQL SUCCESS! と表示されています。特にエラーなどはないと思います。
退会済みユーザー

退会済みユーザー

2016/12/27 08:57

dig localhost コマンドの結果はどうなります?
ryohasegawa

2016/12/27 09:12

hasegawaryou-no-MacBook-Air:php_db_lesson hasegawaryou$ dig localhost ; <<>> DiG 9.8.3-P1 <<>> localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26972 ;; flags: qr; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;localhost. IN A ;; ANSWER SECTION: localhost. 3600 IN A 127.0.0.1 ;; Query time: 6 msec ;; SERVER: 192.168.12.1#53(192.168.12.1) ;; WHEN: Tue Dec 27 18:12:06 2016 ;; MSG SIZE rcvd: 43 です。
退会済みユーザー

退会済みユーザー

2016/12/27 09:36

dsn の指定が間違っているだけのようですね。
guest

0

とりあえず、「localhost」を「127.0.0.1」に書き換えることでTCP接続を強制すれば改善しますでしょうか。

投稿2016/12/26 23:03

maisumakun

総合スコア145183

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

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

ryohasegawa

2016/12/26 23:31

define('PDO_DSN', 'mysql:dbhost=127.0.0.1;dbname=' .DB_DATABASE); 上のコードでいいですかね?
guest

0

エラーは例外処理の中で出力されていますが、どの行でエラーになったのかは
$e->getLine();
で取得できます。これを追加して実行すると、
$db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
でエラーが発生していると思います。

MySQLは実行環境がないので試していませんが、以下の記事ではPHPの設定によるみたいですね。
http://stackoverflow.com/questions/1676688/php-mysql-connection-not-working-2002-no-such-file-or-directory

投稿2016/12/26 15:18

sleepsheep

総合スコア310

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

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

ryohasegawa

2016/12/26 15:24 編集

そうですね。10行目といわれたので・・・
ryohasegawa

2016/12/26 15:38

php.iniから mysql.default_socket を探して mysql.default_socket = /path/to/mysql.sock こう書き換えればいいんですか?
ryohasegawa

2016/12/26 15:42

書き換えてみましたが駄目でした。
sleepsheep

2016/12/26 17:18

コマンドラインからの接続はできていますよね。
ryohasegawa

2016/12/26 17:30

はい。 mysql -u ユーザ名 -pで接続できます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問