mac使用homebrew安裝mysql8.0後的坑
坑一:
安裝完成後進入資料庫show databases;、或者嘗試更改許可權時報錯
ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
Table 'mysql.role_edges' doesn't exist
解決辦法
mysql.server start
mysql_upgrade -u root -p
坑二:
在客戶端成功連線資料庫之後,發現專案裡的pdo連線mysql又報錯了。
Next PDOException: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client [caching_sha2_password] in /vendor/yiisoft/yii2/db/Connection.php:687
這個錯可能是mysql預設使用caching_sha2_password作為預設的身份驗證外掛,而不再是mysql_native_password,但是客戶端暫時不支援這個外掛導致的。官方文件說明
In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password. For information about the implications of this change for server operation and compatibility of the server with clients and connectors, see caching_sha2_password as the Preferred Authentication Plugin.
在MySQL 8.0中,caching_sha2_password是預設的身份驗證外掛,而不是mysql_native_password。有關此更改對伺服器操作的影響以及伺服器與客戶端和聯結器的相容性的資訊,請參閱caching_sha2_password作為首選身份驗證外掛。
解決方法
編輯my.cnf檔案,更改預設的身份認證外掛。
使用如下命令檢視該檔案的位置
brew list mysql
cd到my.cnf檔案所在位置,新增如下內容
default_authentication_plugin=mysql_native_password
重啟mysql
mysql.server restart