Docker安装MySQL数据库

1、Ubuntu安装MySQL安装

(1)安装编译源码需要的包

sudo apt-get install make cmake gcc g++ bison libncurses5-dev build-essential

(2)下载并解压缩 mysql-5.6.26.tar.gz

tar -zxvf mysql-5.6.26.tar.gz cd mysql-5.6.26

(3)编译安装 编译配置:

cmake .

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/usr/local/mysql/data

-DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_PARTITION_STORAGE_ENGINE=1

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_EXTRA_CHARSETS=all

-DENABLED_LOCAL_INFILE=1

-DWITH_READLINE=1

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock

-DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql

-DCOMPILATION_COMMENT="lq-edition"

-DENABLE_DTRACE=0

-DOPTIMIZER_TRACE=1

-DWITH_DEBUG=1

参数说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql       //安装目录

-DINSTALL_DATADIR=/usr/local/mysql/data        //数据库存放目录

-DDEFAULT_CHARSET=utf8                        //使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci            //校验字符

-DWITH_EXTRA_CHARSETS=all                          //安装所有扩展字符集

-DENABLED_LOCAL_INFILE=1                        //允许从本地导入数据

编译: make

安装: sudo make install

2、配置MySQL

(1)新建运行Mysql的用户和组

sudo groupadd mysql

sudo useradd -g mysql mysql

登录mysql用户

先修改mysql用户的密码

passwd mysql

(2)设置Mysql安装目录的权限

cd /usr/local/mysql

sudo chown -R mysql:mysql ./

(3)建立配置文件

cp support-files/my-default.cnf /etc/my.cnf

sudo chown mysql:mysql /etc/my.cnf

修改配置文件: sudo vi /etc/my.cnf

[client]

port = 3306

socket = /usr/local/mysql/data/mysql.sock

[mysqld]

port = 3306

socket = /usr/local/mysql/data/mysql.sock

basedir = /usr/local/mysql

datadir  = /usr/local/mysql/data

(4)初始化数据库

cd /usr/local/mysql

sudo ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

(5)启动mysql服务

方法1: 直接启动 bin/mysqld_safe &

检查MySQL服务是否启动: ps -ef |grep mysql

(6)配置环境变量 为了直接调用mysql,需要将mysql的bin目录加入PATH环境变量。

编辑/etc/profile文件: sudo vim /etc/profile

在文件最后 添加如下两行:

PATH=$PATH:/usr/local/mysql/bin

export PATH

关闭文件,运行下面的命令,让配置立即生效: source /etc/profile

(7)修改root密码(因为默认密码为空)

$ mysql -u root -p mysql> UPDATE user SET Password=PASSWORD('你想要的密码') where USER='root';

mysql> FLUSH PRIVILEGES;

(8)授权root账户远程登录

$ mysql -u root -p mysql> grant ALL PRIVILEGES ON *.* to root@"%" identified by "root" WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

3、Dockerfile文件

############################################

# version : birdben/ubuntu:mysql

# desc : 当前版本安装的MySQL

############################################

# 设置继承自我们创建的 tools 镜像

FROM birdben/ubuntu:tools

# 下面是一些创建者的基本信息

MAINTAINER lexiaofei(lshengqi@netease.com)

# 设置环境变量,所有操作都是非交互式的

ENV DEBIAN_FRONTEND noninteractive

# 添加 supervisord 的配置文件,并复制配置文件到对应目录下面。(supervisord.conf文件和Dockerfile文件在同一路径)

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

RUN echo "export LC_ALL=C"

# 替换ubuntu软件更新的源服务器的sources.list文件

COPY sources.list /etc/apt/sources.list

# 安装升级gcc

RUN sudo rm -rf /var/lib/apt/lists/*

RUN sudo apt-get update

RUN sudo apt-get install -y make cmake gcc g++ bison libncurses5-dev build-essential

# 复制 mysql-5.6.22 文件到镜像中(mysql-5.6.22文件夹要和Dockerfile文件在同一路径)

ADD mysql-5.6.22 /software/downloads/mysql-5.6.22

RUN cd /software/downloads/mysql-5.6.22 && cmake . -DCMAKE_INSTALL_PREFIX=/software/mysql-5.6.22 -DMYSQL_DATADIR=/software/mysql-5.6.22/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/software/mysql-5.6.22/mysql.sock -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DCOMPILATION_COMMENT="lq-edition" -DENABLE_DTRACE=0 -DOPTIMIZER_TRACE=1 -DWITH_DEBUG=1 && make && make install

# 添加测试用户mysql,密码mysql,并且将此用户添加到sudoers里

RUN useradd mysql RUN echo "mysql:mysql" | chpasswd

RUN echo "mysql   ALL=(ALL)       ALL" >> /etc/sudoers

# 设置Mysql安装目录的权限

RUN cd /software/mysql-5.6.22 && sudo chown -R mysql:mysql ./

# 复制已经准备好的my.cnf文件到Docker容器

COPY my.cnf /etc/my.cnf RUN sudo chown mysql:mysql /etc/my.cnf

# 初始化数据库

RUN cd /software/mysql-5.6.22 && sudo ./scripts/mysql_install_db --user=mysql --basedir=/software/mysql-5.6.22 --datadir=/software/mysql-5.6.22/data/

# 设置MySQL的环境变量,若读者有其他的环境变量需要设置,也可以在这里添加。

ENV MYSQL_HOME /software/mysql-5.6.22

# (不推荐下面的路径直接建立在Docker虚拟机上,推荐使用volume挂载方式)

# 在宿主机上创建一个数据库目录存储Mysql的数据文件

# sudo mkdir -p /docker/mysql/data

# VOLUME 选项是将本地的目录挂在到容器中 此处要注意:当你运行-v <hostdir>:<Containerdir> 时要确保目录内容相同否则会出现数据丢失

# 对应关系如下

# mysql:/docker/mysql/data

VOLUME ["/software/mysql-5.6.22/data"]

# 容器需要开放MySQL 3306端口

EXPOSE 3306

# 执行supervisord来同时执行多个命令,使用 supervisord 的可执行路径启动服务。

CMD ["/usr/bin/supervisord"]1

supervisor配置文件内容

# 配置文件包含目录和进程

# 第一段 supervsord 配置软件本身,使用 nodaemon 参数来运行。

# 第二段包含要控制的 2 个服务。每一段包含一个服务的目录和启动这个服务的命令。

[supervisord]

nodaemon=true

[program:sshd]

command=/usr/sbin/sshd -D

[program:mysqld]

# mysql启动必须改成非daemon启动方式,这样supervisor才可以监控到,所以要去掉&

command=./software/mysql-5.6.22/bin/mysqld_safe --user=mysql1

my.cnf(复制MySQL_HOME/support-files/my-default.cnf文件修改如下)

[client]

port = 3306

socket = /software/mysql-5.6.22/data/mysql.sock

[mysqld]

port = 3306

socket = /software/mysql-5.6.22/data/mysql.sock

basedir = /software/mysql-5.6.22

datadir  = /software/mysql-5.6.22/data1

控制台终端

# 构建镜像

$ docker build -t="lexiaofei/mysql:v1" .

# 执行已经构件好的镜像

$ docker run -p 9999:22 -p 3306:3306 -t -i -v /docker/mysql/data:/software/mysql-5.6.22/data birdben/mysql:v1

# 可以ssh远程登录,然后登录mysql就大功告成了

$ ssh admin@10.211.55.4 -p 9999

# root账号的默认密码是空

$ cd /software/mysql-5.6.22/bin

$ mysql -u root -p

# 修改root密码(因为默认密码为空)

mysql> use mysql;

mysql> UPDATE user SET Password=PASSWORD('你想要的密码') where USER='root';

mysql> FLUSH PRIVILEGES;

# 授权root账户远程登录,然后就可以通过navicat或者其他客户端工具连接到MySQL服务器了

mysql> grant ALL PRIVILEGES ON *.* to root@"%" identified by "root" WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

Docker学习实践 - Docker安装MySql数据库的更多相关文章

  1. Docker学习:Docker安装和基本使用

    Docker Docek是一种容器技术.容器是一种轻量级.可移植.自打包的软件技术,使应用程序可以在几乎任何地方以相同的方式运行. 使用者可以在笔记本上创建并测试好的容器,无需任何修改就能够在生产系统 ...

  2. Linux学习之CentOS6下Mysql数据库的安装与配置

    转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j ...

  3. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  4. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  5. 可以自动安装mysql数据库的一个shell脚本

    发布:thatboy   来源:脚本学堂     [大 中 小] 分享一例shell脚本,可以实现mysql数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...

  6. Windows环境安装MySQL数据库

    Windows环境安装MySQL数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Java语言,开发环境在Windows操作系统上,因此需要在Windows上安装My ...

  7. 二进制包安装MySQL数据库

    1.1二进制包安装MySQL数据库 1.1.1 安装前准备(规范) [root@Mysql_server ~]# mkdir -p /home/zhurui/tools ##创建指定工具包存放路径 [ ...

  8. Linux环境安装MySQL数据库

    1.  下载mysql安装包 下载地址1:  http://www.mysql.com/   (mysql官网) 下载地址2:  http://mirrors.sohu.com/mysql/   (其 ...

  9. CentOS下安装Mysql数据库

    其实,安装mysql数据库还是比较容易的,安装方式可以分为源码安装和二进制包安装.安装简单,只需要 yum安装几个包就可以搞定,安装后续其实还需要简单做些工作,才可以使用. 环境:CentOS 6.5 ...

随机推荐

  1. SqlServer之like、charindex、patindex 在有无索引的情况下分析

    1.环境介绍 测试环境 SQL2005 测试数据 200W条 2.环境准备 2.1建表 CREATE TABLE [dbo].[Depratments](         [Dep_id] [int] ...

  2. Redis 桌面管理器

    使用Redis桌面管理器,可以方便开发人员进行开发测试,对Redis存储内容进行可视化管理. 下载安装:https://redisdesktop.com/download 1. 为了方便测试,打开re ...

  3. 如何配置VS使得可以通过域名或IP访问

    一.前言: 在平时使用Visio Studio进行网站开发,经常会遇到一个问题.既要可以使用VS的Debug一步步跟进项目的走向,又必须是外界可以访问的.这个问题会在微信开发中非常常见,就拿微信开发中 ...

  4. Problem : 1412 ( {A} + {B} )

    //集合中元素是不会重复的,所以完全没有必要将两个集合合并后再进行排序,交换排序的时间效率是O(n^2),将两个集合中的元素分别排序后输出即可.输出格式也非常需要 //注意的.输出一列元素赢以cout ...

  5. 【Unity与23种设计模式】解释器模式(Interpreter)

    GoF中定义: "定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言." 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程 ...

  6. 设计模式——备忘录模式(C++实现)

    #include <iostream> #include <string> #include <vector> using namespace std; class ...

  7. 剑指Offer-对称的二叉树

    package Tree; /** * 对称的二叉树 * 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. */ public class ...

  8. 排序算法Java实现(直接插入排序)

    算法描述:对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列.接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列 ...

  9. AngularJS复习-----内置过滤器和内置服务

    AngularJS中的内置服务(共30多个): $http 发送http请求,主要用于进行异步数据请求的功能实现,这个服务主要封装了XMLHttpRequest对象和JSONP数据访问模式来完成远程请 ...

  10. 源码实现 --> itoa函数实现

    itoa函数实现 itoa()函数的功能是将一个整数转换为一个字符串 例如12345,转换之后的字符串为"12345",-123转换之后为"-123",欢迎大家 ...