利用docker部署mysql数据库

2019-04-14 22:12发布

data/attach/1904/37etdpg3hlawmch9pjktvfq6izq7a4ad.jpgdata/attach/1904/ncdl52oy1rrqy0hacoz5zqds26y2q2c5.jpg 前面两篇博客中,我们讨论了如何安装和使用docker,以及如何在docker中部署一个apache服务器,并在外部电脑中访问这个服务器 下面我们来讨论下如何利用docker来部署一个mysql数据库,并在外部电脑中访问这个数据库: 注意:如果你对以下某些命令不了解,请看我的第一篇博客
上面安装的xampp中已经包含了mysql数据库了,所以我就不重新安装mysql了。 首先按照上面教程在本机电脑中安装好xampp,并配置好.bashrc; 然后启动刚才新建的那个镜像ubuntu2,并将本机电脑的8080端口映射到容器的3306端口(mysql默认监听3306端口): sudo docker run –i –t –p 8080:3306 ubuntu2 /bin/bash
执行上述命令后,可进入到容器的命令行。 接着在容器命令行中输入以下命令来启动mysql: /opt/lampp/lampp start 接着进入到mysql中 mysql –u root 查看mysql中有哪些数据库: show databases;
打开本机电脑的另一个命令行终端,启动本机电脑mysql(本机电脑也要安装xampp) /opt/lampp/lampp start 连接到上述容器中的mysql数据库: mysql -h 0.0.0.0 –P 8080 -u root (这里可以用sudo docker ps来看下容器的端口映射)

参数h表示要进入哪台机器上的msyql(host),P(大写)表示端口号。 不出意外的话,此时就可以连接上容器中mysql了; 查看有哪些数据库: show databases;
可比较下这次返回的结果和刚才的结果是否一样。 接着新建一个数据库: create database helloworld;
回到容器命令行中,再次查看有哪些数据库: show databases;
此时就可以看到在本机电脑中新建的那个数据库helloworld了。 其余对数据库的操作也是一样的。 到这里,就讲完了如何在docker中部署一个mysql数据库,并在外部电脑中访问这个数据库。

常见问题: 1. 出现 lost connection to mysql server的错误: 解决方法: 首先进入到目录(如果你的mysql是通过xampp安装的)/opt/lampp/etc:
cd /opt/lampp/etc
然后用vim 打开my.cnf,找到这一行: bind-address = 127.0.0.1
将它注释掉,如果没有这行则忽略。

然后找到[mysqld]部分的参数,在配置后面建立一个新行,添加下面这个参数: skip-name-resolve保存并退出。 接着重启xampp: /opt/lampp/lampp restart
到这里应该就解决了。 如果你的Mysql不是通过xampp安装的,则my.cnf一般在一般只会存放在/etc/my.cnf或者/etc/mysql/my.cnf下; 对my.cnf的修改跟上面的一样,然后重启mysql: /etc/init.d/mysql restart
2. Host ip is not allowed to connet to this mysql server之类的错误 解决方法: 进入mysql: mysql -u root
然后对其他用户授权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
到这里应该就解决了。 如果还没解决,请参考这里:http://joinyo.iteye.com/blog/1489380