mysql8.0の時はログイン認証機能がcaching_sha2_passwordになってる。
laravelでは対応してないので、mysql_native_passwordの認証方式に戻す。
brew install mysql
brew services start mysql
echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.bashrc
mysql_secure_installation
メモ
y
password
y
y
y
y
mysql -uroot -p
mysql -u default -p
rootは何かつけてください。
defaultのpassはsecret。
mysql -uroot -p
select user, host, plugin from mysql.user;
# プラグインを変更する
# caching_sha2_password から mysql_native_password に変更する
ALTER USER 'default'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret';
ALTER USER 'mysql.session'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER 'mysql.sys'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
#反映
FLUSH PRIVILEGES;
exit
/usr/local/etc/my.cnf
変更
[mysqld]
default-authentication-plugin = mysql_native_password
mysql.server restart
データベース作る例。``をつけないと動かないこともある。
create database `default`;
or
create database `default` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
照合順序
utf8mb4_unicode_ciからutf8_general_ciに変更しないと全角半角が同じものとして扱われる。
laradock設定
dockerコンテナ
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33063
DB_DATABASE=dbname
DB_USERNAME=user
DB_PASSWORD=pass
aws
DB_CONNECTION=mysql
DB_HOST=xxxxx.rds.amazonaws.com
DB_PORT=33063
DB_DATABASE=dbname
DB_USERNAME=user
DB_PASSWORD=pass
参考
mac Laravel環境構築
https://qiita.com/yoshinyan/items/38bc4e4a02a66acead91
MySQL8.0 認証方式を変更する(Laravel5)
https://qiita.com/ucan-lab/items/3ae911b7e13287a5b917