MySQL 8では、ユーザーを新規作成してデータベースの権限を与えるというのをワンライナーでできなくなりました。
MySQL 5.7 までは、データベースを作成した後に、そのデータベース用のユーザーを新規作成して、データベースに権限を与えるというのを下記のように1行のコマンドラインで実行できましたね。
でも MySQL 8 では下記のようにシンタックスエラーになってしまいました。
mysql> GRANT ALL ON db_name.* TO db_user_name@localhost identified BY 'db_password';
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 'IDENTIFIED BY 'db_password'' at line 1
これは MySQL 8 からこの書き方(ショートハンド)が使えなくなったとのことで、下記のようにユーザー作成のところを少し変えて、分割してやれば良いそうです。
mysql> CREATE USER 'db_user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
mysql> GRANT ALL ON db_name.* TO 'db_user_name'@'localhost';
CREATE USER
のところを今まで通り CREATE USER 'db_user_name'@'localhost' IDENTIFIED BY 'パスワード';
とやると、MySQL を CLI で扱う分には問題なく MySQL にログインできますが、PHP から扱う場合は下記のようなエラーになってしまいました。
PDO exception: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client