正文
安装MySql镜像
> docker search mysql #查找MySql镜像版本
> docker pull mysql:tag #安装指定版本的mysql镜像,tag为版本号
例如:
> docker pull mysql:5.6 #安装MySql 5.6版本镜像
启动MySql容器
> docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
例如:
> docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:5.6
#启动mysql 5.6版本镜像容器,通过--name取名test-mysql,设置root用户密码为123456,映射host的3306端口访问mysql
从host连接上述启动的container
> ifconfig #查看下docker虚拟出的ip地址
> docker ps -a #查看下容器的运行状态
> mysql -h {ip} -P {port} -u root -p #从host连接docker中的MySql
例如:
> mysql -h 192.168.0.1 -P 3306 -u root -p
如果可以进入mysql命令终端,则表示一切安装配置成功。
如果要用远程用Navicat连接mysql:
创建honey用户,密码也为honey
create user'honey'@'%'identified by'honey';
查看用户honey的权限
show grants for 'honey'@'%';
创建数据库,honey用户只有操作museumofart数据库的权限。
create database museum_of_art;
允许用户honey操作museumofart表
grant all on museum_of_art.* to'honey'@'%';
开最大权限:
GRANT ALL PRIVILEGES ON *.* TO 'honey'@'localhost' IDENTIFIED BY 'honey';
GRANT ALL PRIVILEGES ON *.* TO 'honey'@'%' IDENTIFIED BY 'honey';
但这里有个问题如果要公网访问的话要注意几个点。首先是docker版本问题,我这里安装的是1.13.1 docker ,那么不需要再去开启http远程访问,默认是可以访问的。
现在如果用在公网上用Navicat 是链接不上的。
原因如下:
首先需要登陆阿里云后台,添加阿里云安全组策略 具体位置--网络和安全--安全组--配置规则
![147365080cbeaa8bec4d57582c46e65a.png](https://i-blog.csdnimg.cn/blog_migrate/f0bd11d9b0de3b0bb117556ff51531b0.png)
可以选择多配置你需要的端口。
下面我们需要配置阿里云防火墙
- 查看下防火墙的状态:
systemctl status firewalld
![d3b43f57553df0b0dabe49bdd4d6ef51.png](https://i-blog.csdnimg.cn/blog_migrate/9f21998dfcba8e89a3a02e1dc87ec97a.jpeg)
- 关闭防火墙:
systemctl stop firewalld
其实这样就可以使用了,但是这样是很不安全,我们可以将firewall服务禁用,应用iptables服务(网上大部分启用端口的资料都是基于iptables服务)。
安装iptables
由于没有防火墙会造成不安全,所以给服务器安装一应用更广的防火墙iptables,首先要禁用firewall,通过yum安装iptables:
systemctil disable firewalld
yum install -y iptables-services
启动iptables
systemctl start iptables
启动后可以通过systemctl status iptables查看状态。
更改iptables规则
- 将iptables文件备份下:
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
- 设置 INPUT 方向所有的请求都拒绝
iptables -P INPUT DROP
- 放开所需端口
iptables -I INPUT -p tcp --dport 3306 -m state --state NEW -j ACCEPT
- 保存规则
iptables-save > /etc/sysconfig/iptables
- 设置为开机启动并且重启
systemctl enable iptables.service
systemctl reboot
好了,系统到这里我们需要重新去启动docker
systemctl start docker #运行Docker守护进程
这里如果直接启动镜像的话会报这个错误
![205840442e10519133798d13210847ed.png](https://i-blog.csdnimg.cn/blog_migrate/682d5ac9c385fbfe74fc4ca5612a0f46.png)
那么我们只需要重启下docker ,再去开启你的容器就OK了
systemctl restart docker
那么到这里我们外网就可以正常的去使用阿里云这里的mysql服务
![5f918f61e3631a92b936d86481f534b5.png](https://i-blog.csdnimg.cn/blog_migrate/2f135bf6dcb93e434e4e9decdd1ec935.png)
本公众号免费提供csdn下载服务,海量IT学习资源如果你准备入IT坑,励志成为优秀的程序猿,那么这些资源很适合你,包括但不限于java、go、python、springcloud、elk、嵌入式 、大数据、面试资料、前端 等资源。同时我们组建了一个技术交流群,里面有很多大佬,会不定时分享技术文章,如果你想来一起学习提高,可以公众号后台回复【2】,免费邀请加技术交流群互相学习提高,会不定期分享编程IT相关资源。
扫码关注,精彩内容第一时间推给你
![c96b9ad93bab9996f4c3939ab62f7ba4.png](https://i-blog.csdnimg.cn/blog_migrate/6e06d4483fbe47f41cc9e69af7ebe7c4.jpeg)