通過Docker部署zipkin環境,並把數據存儲配置成mysql(也是Docker拉取的鏡像)。
問題描述:先在mysql中創建zipkin庫,再修改環境變量,重啟zipkin后報錯“Access denied for user 'root'@'172.17.0.1' (using password: NO)”。但mysql用Navicat能夠連接上。
問題原因:對於熟悉mysql的人,這個錯誤應該很容易定位。從MySQL8.0 開始,默認的驗證方式是 caching_sha2_password(參見 MySQL 8.0.4 : New Default Authentication Plugin : caching_sha2_password)。
解決辦法:將驗證方式修改為“mysql_native_password”
USE mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';
FLUSH PRIVILEGES;
修改后再查詢 select user,host,plugin from user; 結果如下
user | host | plugin |
root | % | mysql_native_password |
healthchecker | localhost | caching_sha2_password |
mysql.infoschema | localhost | caching_sha2_password |
mysql.session | localhost | caching_sha2_password |
mysql.sys | localhost | caching_sha2_password |
備注:貌似這些參數在啟動mysql容器的時候是可以修改的。