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

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

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

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

10614閲覧

Laravel での「php artisan migrate」が実行できません。

rude_rockers

総合スコア32

MySQL

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

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

1グッド

0クリップ

投稿2018/10/24 23:31

編集2018/10/25 01:19

Laravelでサイトを作ろうとしています。

MacのDesktopに「Laravel_app」というフォルダを作り,Laravelをインストールしてプロジェクト「imageApp」を作りました。

ビルドインサーバーを立ち上げLaravelのトップ画面が表示されました。

データベースを構築しようと、「php artisan make:migration create_articles_table」でできたファイル(2018_10_25_063930_create_articles_table.php)に、

PHP

1<?php 2 3use Illuminate\Support\Facades\Schema; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Database\Migrations\Migration; 6 7class CreateArticlesTable extends Migration 8{ 9 /** 10 * Run the migrations. 11 * 12 * @return void 13 */ 14 public function up() 15 { 16 Schema::create('articles', function (Blueprint $table) { 17 $table->increments('id'); 18 $table->string('title'); 19 $table->text('body'); 20 $table->timestamps(); 21 }); 22 } 23 24 /** 25 * Reverse the migrations. 26 * 27 * @return void 28 */ 29 public function down() 30 { 31 Schema::dropIfExists('articles'); 32 } 33} 34

とし、「php artisan migrate」を実行しようとすると、

Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations) at /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) { > 664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| Exception trace: 1 PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]") /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []) /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 Please use the argument -v to see more details.

と出ました。
色々調べましたが、よくわからず、アドバイスいただけると助かります!

追記
Mysqlのユーザーはrootです。
「SELECT user, host, plugin FROM mysql.user;」の実行結果は、

mysql> 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 | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec)

でした。

config/database.phpは

mysql

1 2'mysql' => [ 3'driver' => 'mysql', 4'host' => env('DB_HOST', '127.0.0.1'), 5'port' => env('DB_PORT', '3306'), 6'database' => env('DB_DATABASE', 'forge'), 7'username' => env('DB_USERNAME', 'forge'), 8'password' => env('DB_PASSWORD', ''), 9'unix_socket' => env('DB_SOCKET', ''), 10'charset' => 'utf8mb4', 11'collation' => 'utf8mb4_unicode_ci', 12'prefix' => '', 13'strict' => true, 14'engine' => null, 15],

となっております。

nuttstock👍を押しています

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

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

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

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

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

xenbeat

2018/10/24 23:52

データベースの接続ユーザー名と「SELECT user, host, plugin FROM mysql.user;」の実行結果を追記ください。
rude_rockers

2018/10/25 00:09

ユーザーは「root」で、実行結果は「mysql> 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 | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec)」でした。
m.ts10806

2018/10/25 00:38

「色々調べた内容」はなるべく追記してください。でないと調べ方が悪いのか記事を理解できていないのかわかりませんし、回答に参考記事が提示されるときに「それ確認しました」となると回答が無駄足になります。質問は編集できますので適宜追記してください。※こちらのコメント欄はデフォルト非表示です
guest

回答1

0

ベストアンサー

今追記依頼中ですが、接続ユーザーの認証方式(認証プラグイン)がmysql_native_passwordではないことが考えられます。
その通りであれば、対象ユーザーに対して以下を実行してください。

ALTER USER 'ユーザー'@'ホスト' IDENTIFIED WITH mysql_native_password BY 'パスワード';

投稿2018/10/25 00:01

xenbeat

総合スコア4258

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

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

rude_rockers

2018/10/25 00:16

ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY rude1979; と打ちましたが、 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rude1979' at line 1 構文エラーと出ましたが書き方に問題がありますか?
xenbeat

2018/10/25 00:18

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rude1979';
rude_rockers

2018/10/25 00:58

うぐぐ!すいません!ありがとうございます。
rude_rockers

2018/10/25 01:02

Query OK, 0 rows affected (0.06 sec) と出ました! そして「php artisan migrate」を実行してみると、先ほどと同じ、 Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations) at /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664 660| // If an exception occurs when attempting to run a query, we'll format the error 661| // message to include the bindings with SQL, which will make this exception a 662| // lot more helpful to the developer instead of just the database's errors. 663| catch (Exception $e) { > 664| throw new QueryException( 665| $query, $this->prepareBindings($bindings), $e 666| ); 667| } 668| Exception trace: 1 PDOException::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]") /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []) /Users/kunshi/Desktop/Laravel_app/imageApp/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70 Please use the argument -v to see more details. と出ました。。。
xenbeat

2018/10/25 01:08 編集

> 2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []) 追記依頼で確認いただいた内容と違ってますよね。追記いただいた内容にhomesteadなんてユーザー出てきてないですよね。どちらが正ですか?
rude_rockers

2018/10/25 01:18

mysqlのユーザーが「root」。 データベースユーザーの事なんですかね? mysqlも作ったばかりなので、他にユーザーはいないと思いますが。。。 config/database.phpは 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], となっております。
xenbeat

2018/10/25 01:32 編集

> mysqlも作ったばかり あ、そんな感じでしたか。。。 えっとどこにどのバージョンのMySQLをインストールしたのですか? そのような状況で「mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []」のように接続しにいっている事がおかしいと気づいていただければ良いのですが。 そもそもなんですが、データベースもないならLaravelで使うものを作りましょう。
rude_rockers

2018/10/25 01:41

手順的に先にデータベースを作るという事ですね!?
xenbeat

2018/10/25 01:46

はい。 「mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []」がどういう意味かも理解した上で作業してくださいね。
rude_rockers

2018/10/25 02:29

ちょっと根本的に間違っていそうなので、Vagrantに仮想サーバー構築して、そこでやり直してみます。 アドバイスありがとうございました!
xenbeat

2018/10/25 02:54 編集

どこに構築してもいいのですが、以下ポイントをおさえておけば自己解決できる問題かと思いますので頑張ってください! ・config/database.phpの中のenv()が使われている設定値は.envファイルの設定値が優先される( https://readouble.com/laravel/5.7/ja/configuration.html ) ※その結果、現在のデータベース接続情報は「mysql:host=127.0.0.1;port=3306;dbname=homestead", "homestead", "secret", []」となっている ・上記Laravelのデータベース接続情報で接続できるようにデータベースやユーザー等を準備する必要がある
rude_rockers

2018/10/25 03:07

親切過ぎます!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問