利用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

时间: 2024-07-29 09:11:31

利用docker部署mysql数据库的相关文章

利用oneproxy部署mysql数据库的读写分离

实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 oneproxy-rhel5-linux64-v5.6-ga 下载地址:http://pan.baidu.com/s/1jGpL2o2 实验拓扑: 注意:本实验是之前mysql-proxy实验的拓展,因此大部分环境及设定是相同的,其中一.二步这里不再重复,具体请参考:利用mysql-proxy进行mysql数据库的读写分离

利用Xtrabackup进行mysql数据库的备份

利用Xtrabackup来实现数据库的备份 Xtrabackup是有percona公司开发的一款开源备份工具,它与ibbackup这个备份工具不同的是.ibbackup是一个收费的备份工具,而且在其备份性能上,ibbackup不如Xtrabackup.ibbackup和Xtrabackup都对Innodb存储引擎支持在线物理完全备份和在线物理增量备份,对MyISAM存储引擎来说,只支持温备份而已.更对关于两者的特性比较,请参考http://www.percona.com/software/per

基于docker的php调用基于docker的mysql数据库的方法

1:建立基于docker的mysql,参考 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker?php image 在当前目录,建立Dockerfile,内容如下 FROM php:7.0-cli MAINTAINER Terry Zhang <[email protected]> RUN docker-php-ext-install pdo_mysql mysqli 3.建立php镜像 docker build -t php-mysql . 4. 编写php脚本

node.js利用express连接mysql数据库

我们创建一个mysql.js (好像大神们,称呼这叫一个模块,然后暴露一个接口)用来连接数据库 var connction ={}; connction.mysql = { host:"localhost",           //这是数据库的地址 user:"root",                  //需要用户的名字 password:"root",            //用户密码 ,如果你没有密码,直接双引号就是 databas

微社区部署(2):服务器部署MySql数据库

写在前面:单独写部署MySql原因是,我这边的应用数据库都是独立存在的,数据与应用分别部署在不同的服务器.另外我也没有实际部署MySql的经验,特意写一篇日志,张记性.安装MySql参考了http://wenku.baidu.com/view/dbab9edeb0717fd5360cdcd0.html此文,在此感谢. 由于我的Oracle账号被锁了,百度搜了5.6.24的MSI版本http://cdn.mysql.com/Downloads/MySQLInstaller/mysql-instal

Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)

设计该脚本的一些设计.编写考虑: 该脚本适用于编译安装mysql和通过yum或apt-get等安装方式 该脚本可以反复执行,不会重复覆盖数据 可增加,删除N天前的备份以节省磁盘空间 充分利用mysqldump的自带锁表功能.刷新日志.复制等功能 利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用) #!/bin/bash MYSQLDBUSERNAME=root MYSQLDBPASSWORD=password MYSQBASEDIR=/usr/local/mys

docker 部署mysql服务之后,执行sql脚本

1,先将.sql文件copy到docker容器里 docker ps //找到容器的短ID或者指定的name. docker inspect  -f '{{.Id}}' id or name 得到指定容器的全ID docker cp 本地文件路径 ID全称:容器路径[docker cp mysql.sql 12345:/tmp/] 2,将文件copy进容器之后,进入docke 容器 docker exec -it mysql bash 进入容器 mysql -u root -p 进入mysql服

docker中mysql数据库的数据导入和导出

导出数据 查看下 mysql 运行名称 docker ps 结果: ? 执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker 容器中.而我们要备份的数据库就在里面,叫做 test_db.mysql 的用户名密码均为root,我们将文件备份到宿主机/opt/sql_bak文件夹下. docker exec -it mysql_server mysqldump -uroot -proot test_db > /opt/sql_

使用docker部署mysql主从复制集群

一.环境搭建 虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 docker run -p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 docker run -p 3308:3306 --name mysql-sl