Solution: 1. Log in to the mysql container, and then enter mysql. The syntax is "docker exec -it mysql /bin/bash..."; 2. Use "alter user 'root'@'%' identified with mysql_native_password by '...';" Change the login password; 3. Use navicat to connect to mysql remotely.
The operating environment of this tutorial: linux7.3 system, docker version 19.03, Dell G3 computer.
#docker installation mysql
docker pull mysql docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql
At this time, when navicat remotely connects to mysql, the following error will be prompted:
Solution:
1. Log in to the mysql container in the virtual machine, and then enter mysql
docker exec -it mysql /bin/bash mysql -uroot -p Enter password: mysql> select host,user,plugin,authentication_string from mysql.user;
Note: host is %, which means there is no restriction on ip. Localhost means that the local machine uses a plugin other than mysql_native_password, so you need to change the password.
2. Modify Password
mysql> use mysql; mysql> alter user 'root'@'%' identified with mysql_native_password by '123'; mysql> flush privileges; mysql> select host,user,plugin,authentication_string from mysql.user;
3. When the above picture appears, use navicat to remotely connect to mysql again and the success is achieved.
Recommended learning: "docker video tutorial"
The above is the detailed content of What should I do if mysql installed with docker cannot be accessed remotely?. For more information, please follow other related articles on the PHP Chinese website!