docker镜像安装mysql的好处:方便,容器间互不干扰,可以在同一主机上安装多个版本的mysql,只需要在主机上映射不同的端口即可。
安装mysql镜像
docker search mysql #查找MySql镜像版本
docker pull mysql:5.7 #安装指定版本的mysql镜像,5.7为版本号
启动mysql容器
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3307:3306 mysql:5.7
查看mysql容器是否建立成功并启动:
从host上连接上面启动的容器:
ifconfig #查看下docker虚拟出的ip地址
docker ps -a #查看下容器的运行状态
mysql -h {ip} -P {port} -u root -p #从host连接docker中的MySql
如:
mysql -h172.17.0.1 -P3007 -u root -p123456
如果要用远程用Navicat连接mysql,继续往下看:
以下配置允许远程用honey用户,通过密码honey连接数据库,且只允许操作名为museum_of_art的数据库。
创建honey用户,密码也为honey:
create user'honey'@'%'identified by'honey';
查看用户honey的权限:
show grants for 'honey'@'%';
创建数据库,honey用户只有操作museum_of_art数据库的权限:
create database museum_of_art;
允许用户honey操作museum_of_art表:
grant all on museum_of_art.* to'honey'@'%';
刷新权限:
FLUSH PRIVILEGES;
如果开最大权限:
GRANT ALL PRIVILEGES ON *.* TO 'honey'@'localhost' IDENTIFIED BY 'honey';
GRANT ALL PRIVILEGES ON *.* TO 'honey'@'%' IDENTIFIED BY 'honey';
阿里云服务器如果通过以上设置后远程Navicat还是连不上,请继续往下看。
现在如果在公网上用Navicat 是链接不上的。
原因如下:
首先需要登陆阿里云后台,添加阿里云安全组策略 具体位置 -> 网络和安全 -> 安全组 -> 配置规则
可以选择多配置需要的端口。
下面我们需要配置阿里云防火墙
查看下防火墙的状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld
其实这样就可以使用了,但是这样很不安全,我们可以将firewall服务禁用,应用iptables服务(网上大部分启用端口的资料都是基于iptables服务)。
由于没有防火墙会造成不安全,所以给服务器安装一应用更广的防火墙iptables,首先要禁用firewall,通过yum安装iptables:
systemctil disable firewalld
yum install -y iptables-services
systemctl start iptables
启动后可以通过systemctl status iptables查看状态。
将iptables文件备份下:
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
设置 INPUT 方向所有的请求都拒绝
iptables -P INPUT DROP
放开所需端口
iptables -I INPUT -p tcp --dport 3307 -m state --state NEW -j ACCEPT
保存规则
iptables-save > /etc/sysconfig/iptables
设置为开机启动并且重启
systemctl enable iptables.service
systemctl reboot
好了,系统到这里我们需要重新去启动docker
systemctl start docker #运行Docker守护进程
这里如果直接启动镜像的话会报这个错误
那么我们只需要重启下docker ,再去开启你的容器就OK了
systemctl restart docker
那么到这里我们外网就可以正常的去使用阿里云上的mysql服务了。