docker连接宿主机mysql

3,970 阅读1分钟

背景:

由于docker中localhost&127.0.0.1代表docker自己,而非宿主机,因此不能通过127.0.0.1:3306访问

解决

修改mysql配置,将绑定配置注释

vim /usr/local/etc/mysql

#bind-address = 127.0.0.1

mysql允许用户从远处ip访问

update user set host = '%' where user ='root';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;(可以指定某个ip)

flush privileges;

重启mysql

mysql.service restart

这样Telnet 就能连通

$ telnet 192.168.1.1 3306
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
J
&a�!NBGGPqky`%lmysql_native_password

laravel修改配置文件:

DB_HOST=192.168.1.1
这个ip是宿主机的ip

可能存在问题:

访问不同可尝试将防火墙关闭