vim Dockerfile
#编写dockerfile文件
FROM centos:7
#指定基础镜像
RUN yum -y update
#更新yum源
RUN yum -y install \
ncurses \
ncurses-devel \
bison \
cmake \
make \
gcc \
gcc-c++
#安装mysql依懒环境包
RUN useradd -s /sbin/nologin mysql
#创建运行用户
ADD mysql-boost-5.7.20.tar.gz /usr/local/src
#将压缩包添加到/usr/local/src目录下面
WORKDIR /usr/local/src/mysql-5.7.20/
#指定当前的工作路径
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make && make install
#cmake和编译
RUN chown -R mysql:mysql /usr/local/mysql/
#给予/usr/local/mysql的属主和属组
RUN rm -rf /etc/my.cnf
#删除原来的/etc/my.cnf文件
ADD my.cnf /etc
#将宿主机的my.cnf文件添加到/etc/目录下面
RUN chown mysql:mysql /etc/my.cnf
#设置权限
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#设置mysql的环境
WORKDIR /usr/local/mysql/
#指定当前工作路径
RUN bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#初始化数据库
RUN cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
#将mysql的启动脚本复制到/usr/lib/systemd/system/目录下面,便于systemctl的管理
EXPOSE 3306
#开放容器的端口
RUN echo -e "#!/bin/bash \nsystemctl enable mysqld" > /run.sh
#写mysql的启动脚本
RUN chmod 755 /run.sh
#给予权限
RUN sh /run.sh
#执行脚本
CMD ["init"]
#容器启动时执行
#CMD ["mysql_safe"]
vim my.cnf
[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
#my.cnf启动脚本
构建mysql:new的镜像
docker build -t centos:mysql .
启动容器
docker run --name=mysql_server -d -P --privileged centos:mysql
提权
docker exec -it 镜像ID /bin/bash
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';
privileges on *.* to 'root'@'%' identified by 'abc123';
grant all privileges on *.* to 'root'@'%' localhost identified by 'abc123';