カテゴリー
IT MySQL PHP Web サーバー プログラム

PHPからMySQL8.0に接続できなくなった

MySQL8.0.4から、パスワードの認証方式が変わっているため(caching_sha2_password)、PHPから接続する際に、古いパスワードの認証方式(mysql_native_password)で行っていると以下のようなエラーが表示されます。

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

PHP 7.1.6、7.2.4以降から、caching_sha2_passwordに対応しています。この記事では、古い認証方式のまま接続する方法を解説します。

以下のコマンドでMySQL Serverに接続します。

mysql -u root -p

以下のSQL文で現在の設定を確認します。

SELECT user, host, plugin FROM mysql.user;

以下のように出力されるはずです。

+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+

以下のSQL文でrootのパスワードを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';

カテゴリー
Eclipse PHP プログラム

Eclipse で tab が space になる

Eclipseのデフォルト設定では、タブを入力すると自動的にスペースに変換されてしまいます。この設定を解除するのは、知らないと中々難しいのです。

検索エリアから「tab」を含む設定を探し、まさしくこれだろうと思いますが、これは違います。

検索エリアに「formatter」と入力して、PHP > Code Style > Formatter を選択し、下図の「show…」ボタンをクリックします。

下図の「Tab policy」を「Space」から「Tab」に変更します。

カテゴリー
IT PHP Web プログラム

Cookieのクロスサイト設定

A cookie associated with a cross-site resource at http://example.com/ was set without the SameSite attribute.

http://example.com/のクロスサイトリソースに関連付けられたCookieが、 SameSite属性なしで設定されました。

A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None and Secure.

Chromeの今後のリリースでは、 SameSite = None および Secure が設定されている場合にのみ、クロスサイトリクエストでCookieを配信します。

You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.

デベロッパーツールのApplication> Storage> CookiesでCookieを確認し、https://www.chromestatus.com/feature/5088147346030592 および https://www.chromestatus.com/feature/5633521622188032 で詳細を確認できます。

カテゴリー
Ajax PHP プログラム

JavaScriptのクロスオリジン

CORS – Cross-Origin Resource Sharing

クロスオリジンとは、異なるドメイン間でJavaScriptなどのAjaxを行う方法です。

JavaScript側の設定

スクリプトの読み込みを行うタグで crossorigin="anonymous" を付ける。

<script src="http://example.com/js/ajax.js" crossorigin="anonymous"></script>

サーバー側の設定

JavaScriptファイルの送信ヘッダーに Access-Control-Allow-Origin ヘッダーを付加します。

<?php header("Access-Control-Allow-Origin: *"); ?>