通过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容器的时候是可以修改的。