laradock mysql8.0 connection problem
By default, laradock uses mysql latest image to build mysql service. As a result, mysql 8.0 is used and caching_sha2_password authentication plugin is the default configuration.
When phpmyadmin tries to connect mysql service, error occurs:
#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
The root cause is phpmyadmin still uses mysql_native_password to connect mysql.
So to solve this problem elegantly, one of the way is to change mysql service to use mysql_native_password authentication plugin.
I tried modifying laradock’s docker-compose.yml to fix this problem.
### MySQL ################################################
mysql:
build:
...
command:
--default-authentication-plugin=mysql_native_password
remove the generated mysql container and image, rebuild them from scratch. And it will work.
Other ways may be changing mysql’s dockerfile or changing mysql’s my.cnf file.