码迷,mamicode.com
首页 > 数据库 > 详细

利用docker部署mysql数据库

时间:2015-05-29 14:05:14      阅读:2183      评论:0      收藏:0      [点我收藏+]

标签:docker   mysql   服务器   数据库   

前面两篇博客中,我们讨论了如何安装和使用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
<img src="http://img.blog.csdn.net/20150529120907846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amFuNTExNTM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

接着进入到mysql中

mysql –u root

查看mysql中有哪些数据库:

show databases;

打开本机电脑的另一个命令行终端,启动本机电脑mysql(本机电脑也要安装xampp)

/opt/lampp/lampp start

连接到上述容器中的mysql数据库:

mysql  -h 0.0.0.0 –P 8080  -u root
<img src="http://img.blog.csdn.net/20150529121214120?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amFuNTExNTM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
(这里可以用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




利用docker部署mysql数据库

标签:docker   mysql   服务器   数据库   

原文地址:http://blog.csdn.net/liujan511536/article/details/46228371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!