docker中安装的mysql无法远程连接问题解决

服务器 数据库 docker 504      收藏
docker中安装的mysql无法远程连接问题解决

在docker中创建mysql

docker run -p 3306:3306 -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

然后进入mysql中

docker exec -it mysql /bin/bash

在mysql中链接数据

mysql -u root -p

输入密码,数据库可以链接成功

但是远程请求失败

可能存在的问题

第一种: 在iptables中开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
提示success,表示设置成功。
 查看防火墙状态: 
systemctl status firewalld    //查看防火墙状态 dead(未开启),running(已开启)。
systemctl start firewalled  //开启防火墙,成功没任何提示。
systemctl stop firewalled  //关闭防火墙。

第二种: 设置mysql远程访问权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;

第三种: 修改mysql配置文件中的bind_address

docker exec -it mysql /bin/bash
vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加 vi /etc/mysql/mysql.conf.d/mysqld.cnf

12.png

保存之后重新启动mysql容器,测试远程连接