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

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

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

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

MacOS(OSX)

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

1回答

7172閲覧

PHPからMySQLに接続できない(Macローカル・Wordpress)

miruka

総合スコア13

MySQL

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

MacOS(OSX)

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2019/03/05 13:09

編集2019/03/06 00:20

前提・実現したいこと

まずMacにインストールされているApacheでローカルサーバーを動くようにしました。
そこでWordPress(5.1)が動くようにしようとしているところです。

データベースはインストールされていなかったので、
MySQL(8.0.15)をHomebrewでインストールしました。
そこから色々調べて試しましたが、WordPressのデータベース接続確立エラーを解消することができません。

何か大事なことが抜けているのかもしれません。
解決できるようアドバイスいただけると助かります。

発生している問題・エラーメッセージ

ブラウザでWordPressにアクセスした際に下記のメッセージが出ます。

error

1Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /Users/***/wordpress/wp-includes/wp-db.php on line 1612

wp-db.php の 1612行目は次の通りです。

php

1mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );

関係あるかわかりませんが、
/usr/local/var/***.local.err のログです。

[Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/usr/local/var/mysql' in the path is accessible to all OS users. Consider choosing a different directory. [System] [MY-010931] [Server] /usr/local/Cellar/mysql/8.0.15/bin/mysqld: ready for connections. Version: '8.0.15' socket: '/tmp/mysql.sock' port: 3306 Homebrew. [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060

試したこと

  • mysql.sockを探してmy.cnfとphp.iniに記載するパスを揃える。
socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
  • mysql.sockがちゃんと/tmp/にあるか確認。→lsコマンドであるのを確認できました。
  • MySQLを一度停止して起動。→「SUCCESS」と表示されます。
mysql.server stop mysql.server start
  • ターミナルからWordPressに設定しているユーザでMySQLに接続。→rootや他のユーザでも入れました。
mysql -h localhost -u USER -p
  • wp-config.phpの設定を確認。→接続できた情報と同じか複数回確認しました。

他に試したこと

  • my.cnfでポートの設定などを消したり付けたり。→結果に変化はありませんでした。
[mysqld] bind-address = 127.0.0.1 port=3306 [client] port=3306
  • ホスト名を変える。→エラーメッセージが増えました。

php

1/** MySQL のホスト名 */ 2define('DB_HOST', '127.0.0.1');
Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in /Users/***/wordpress/wp-includes/wp-db.php on line 1612
  • 別のDBやユーザを作成して試す。→結果に変化はありませんでした。
  • /var/log/mysqld.log を探すも見つからない。

phpinfo() の情報

※mysqlのキーワードがある部分を抜き出してきました。

PHP Version 7.1.23

mysqli
MysqlI Supportenabled
Client API library versionmysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
Active Persistent Links0
Inactive Persistent Links0
Active Links0
DirectiveLocal ValueMaster Value
mysqli.allow_local_infileOnOn
mysqli.allow_persistentOOn
mysqli.default_hostlocalhostlocalhost
mysqli.default_port33063306
mysqli.default_pwno valueno value
mysqli.default_socket/tmp/mysql.sock/tmp/mysql.sock
mysqli.default_useradminadmin
mysqli.max_linksUnlimitedUnlimited
mysqli.max_persistentUnlimitedUnlimited
mysqli.reconnectOffOff
mysqli.rollback_on_cached_plinkOffOff
mysqlnd
mysqlndenabled
Versionmysqlnd 5.0.12-dev - 20150407 - $Id:38fea24f2847fa7519001be390c98ae0acafe387 $
Compressionsupported
core SSLsupported
extended SSLsupported
Command buffer size4096
Read buffer size32768
Read timeout31536000
Collecting statisticsYes
Collecting memory statisticsNo
Tracingn/a
Loaded pluginsmysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_sha256_password
API Extensionspdo_mysql,mysqli
mysqlnd statistics0の項目は省略
bytes_sent184
bytes_received252
packets_sent4
packets_received4
protocol_overhead_in16
protocol_overhead_out16
active_connections18446744073709551614
active_persistent_connections18446744073709551614
PDO
PDO supportenabled
PDO driversmysql, pgsql, sqlite
pdo_mysql
PDO Driver for MySQLenabled
Client API versionmysqlnd 5.0.12-dev - 20150407 - $Id:38fea24f2847fa7519001be390c98ae0acafe387 $
DirectiveLocal ValueMaster Value
pdo_mysql.default_socket/tmp/mysql.sock/tmp/mysql.sock
PHP Credits
ModuleAuthors
MySQL driver for PDOGeorge Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQLiZak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLndAndrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter

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

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

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

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

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

gh640

2019/03/05 13:26

まずターミナルの `mysql` コマンドで MySQL に接続できるかどうかで大きく分かれると思うのですが、「 ターミナルからWordPressに設定しているユーザでMySQLに接続 」はできている状態ですか?それとも何らかのエラーで接続できませんか? `mysql` コマンドで接続できていないのであれば、 MySQL のインストール・セットアップについてお調べになるとよいと思います。逆に接続できているのであれば、 PHP/WordPress から MySQL に接続する方法についてお調べになる(あるいはここで回答を待たれる)のがよいでしょうか。
miruka

2019/03/05 22:36

コメントありがとうございます。 質問に試したことの結果を追記しました。 現状ターミナルでMySQLにDB・ユーザの追加は問題なく行える状態です。
CHERRY

2019/03/05 23:33

phpinfo() を実行して、mysql 関連部分がどのような設定になっているか確認して質問に追記していただけないでしょうか?
miruka

2019/03/06 00:23

ありがとうございます。 phpinfo()から関連のありそうな部分を質問に追記しました。
gh640

2019/03/06 04:17

私は質問させていただいたのにお力になれずでしたが・・・ CHERRY さんの回答で無事解決されたようでよかったです :D
miruka

2019/03/06 05:23

gh640さんもありがとうございました!
guest

回答1

0

ベストアンサー

PHP info の結果を見て思い出しましたが...

Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

のエラーが出ているのは、MySQL 8 で、デフォルトの認証方式 が変更になった影響ですね。

6.5.1.3 Caching SHA-2 Pluggable Authentication

インストールされている PHP が、MySQL の新しい認証方式に対応していないので、MySQL で、従来形式のパスワードを使うように設定した方が良さそうです。


mysql コマンドで、mysql データベースに接続してから、ユーザーに従来形式のパスワードを設定する。

ALTER USER 'root'@'localhost' identified WITH mysql_native_password BY 'パスワード';

次に my.cnf で、デフォルトを従来形式のパスワードを使うようにする

default_authentication_plugin=mysql_native_password

MySQL Server を再起動。

上記の設定するとどうなりますか?

投稿2019/03/06 00:45

CHERRY

総合スコア25171

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

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

miruka

2019/03/06 03:14

ありがとうございます! ご指摘通り、認証方式の違いが原因でした。 wp-config.phpに設定するユーザの認証方式を mysql_native_password に変更することで解決いたしました。 ただmy.cnfでの設定は逆にエラーが出たため、 記載なしで試したところ問題なく接続できるようになりました。 ``` mysql: [ERROR] unknown variable 'default_authentication_plugin=mysql_native_password'. ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問