docker中mysql初始化及启动失败问题解决方案

最近做项目,遇到这样问题,docker 中的mysql 不能启动,经过上网查资料,终于解决了这个问题,这里记录下,也许还能帮助到大家,

在docker中有一个mysql服务,其数据文件是挂在在主机外面的文件,在docker中的root有访问该数据文件的权限,但是docker中mysql访问数据文件的时候提示权限不足,于是只有以root用户来启动mysql了。

数据初始化:

mysql_install_db --user=root --explicit_defaults_for_timestamp=1

初始化后以root用户启动

mysqld --user=root  --explicit_defaults_for_timestamp=1

mysql启动正常。

启动方式主要有以下三种:

1、使用systemctl 启动 systemctl start mysqld 
   2、使用脚本启动 /etc/inint.d/mysqld start
   3、使用safe_mysqld或mysqld --user=mysql启动

关闭方式也有以下三种:

1、使用systemctl 关闭 systemctl stop mysqld
   2、使用脚本关闭 /etc/inint.d/mysqld stop
   3、mysqladmin shutdown

注意:使用safe_mysqld或mysqld --user=mysql启动的服务,只能通过mysqladmin shutdown关闭,不能通过systemctl 或脚本关闭。

mysqladmin shutdown可关闭以上三种服务。脚本可关闭systemctl开启的服务,同样systemctl也可关闭脚本开启的服

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2016-10-25

详解如何使用DockerHub官方的MySQL镜像

前言 最近一直在尝试以官方centos镜像为基础,制作基于centos的MySQL镜像.但是制作后发现镜像大小已经超过1.5G,这对于一般的Docker镜像来说太臃肿了.Docker Hub官方提供的mysql镜像才324MB.目前来说我还没有找到什么好的方法把我制作的镜像的体积减下来,所以就先使用官方的吧! docker pull mysql:5.7 如何使用这个Docker镜像? 1.启动一个Mysql Server容器(默认端口3306) docker run --name mysql -

mysql 5.7 docker 主从复制架构搭建教程

分享mysql 5.7 docker 主从复制架构搭建教程,供大家参考,具体内容如下 环境版本: MySQL :  5.7.13 Docker : 1.11.2 CentOS : 7.1 1.先在两个物理机上分别安装两个MySQL.命令如下 复制代码 代码如下: docker pull mysql:5.7.13  docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.13 2.

docker上安装使用mysql镜像

背景: 现如今不管什么服务和应用基本都可以在docker里跑一跑了,但是在我个人的印象中,像数据库这种比较重要大型且数据容易受伤的应用是不适合在docker里跑的.但是也有很多人尝试在docker中跑mysql等数据库,所以也试着尝试一下.(好吧,重点是领导喜欢~~) 获取镜像: mysql的镜像可以自己用dockerfile制作一个,或者直接到官方的docker镜像库中下载,本文用的是官方镜像. # docker pull mysql # docker images REPOSITORY TA

基于Docker的PHP调用基于Docker的Mysql数据库

docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 自从接触docker以来,一直想实现这种玩法.如下是步骤 1:建立基于docker的mysql,参考文章 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker的php image 在当前目录,建立Dockerfile,内容如下 FROM php

在Docker中使用MySQL的教程

提及虚拟化技术,我可是linuxContainer(LXC)的热爱者.但随着Docker技术的声名鹊起,我想在这展示一下如何使用带有Docker的Mysql Docker是什么? 实际上,Docker就是LXC的封装.使用起来很有意思.Docker采用LXC来虚拟化每个应用.所以在接下来的示例中,我们会启动chroot环境中一个被封装在自己命名空间内的mysql实例(你也可以设置Cgroups对应的资源)使用Docker的一个亮点就是统一文件系统(aufs).所以当启动一个Docker容器后,它

Docker mysql 主从配置详解及实例

Docker mysql 主从配置 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU

mysql分区功能详解,以及实例分析

一,什么是数据库分区 前段时间写过一篇关于mysql分表的 的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面 (可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表结构的,一个是myd存放表数据的,一个是myi存表 索引的.如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这 一张

nginx+keepalived 高可用主从配置详解

本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下: 一.系统环境及软件版本 CentOS 6.6 x64 keepalived-1.2.18.tar.gz nginx-1.6.2.tar.gz 主服务器:192.168.38.64 从服务器:192.168.38.66 VIP :192.168.38.100 二.nginx安装 (主从安装一致) 1.安装依赖环境 复制代码 代码如下: yum install gcc gcc-c++ make automake

MySQL 序列 AUTO_INCREMENT详解及实例代码

MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql>

Nginx的完整配置详解及实例代码

Nginx的完整配置详解 最近公司新项目,由于自己是小白,跟着项目经理对Nginx进行配置,在网上找到一篇相关资料,觉得不错,并可以完成配置,这里记录下, 实例代码: #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;

MySQL 复制表详解及实例代码

MySQL 复制表详解 如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE ... SELECT 命令,是无法实现的. 本章节将为大家介绍如何完整的复制MySQL数据表,步骤如下: 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等. 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构. 如果你想复制表的内容,

mysql安装配置详解教程(一)

MySQL数据库具有跨平台性,不仅可以在Windows上运行,还可以在UNIX,Linux和Mac OS等操作系统上运行 1.先简单说下MySQL的版本: 根据操作系统的类型可分为:Windows版.UNIX版.Linux版和Mac OS版 根据用户群体的不同可分为:社区版(Community Edition)和企业版(Enterprise),社区版完全免费,企业版是收费的 根据发布顺序来区分可分为:4.1.5.0.5.1.5.4.6.0等版本 根据MySQL的开发情况分为:Alpha.Beta

Docker 基础网络配置详解

外部访问 随机映射端口 使用 -P 标记,Docker会随机映射一个49000-49900的端口到内部容器开放的网络端口 docker run -d -P training/webapp python app.py docker ps -l # 显示最近创建的容器 docker logs -f web # 查看应用的信息 映射所有接口地址 docker run -d -p 5000:5000 training/webapp python app.py 映射到指定地址的指定端口 docker ru

Docker基础 :网络配置详解

大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合.Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务.接下来我们将讲述 Docker 的网络功能,包括使用端口映射机制来将容器内应用服务提供给外部网络,以及通过容器互联系统让多个容器之间进行快捷的网络通信. 端口映射实现访问容器 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的.当容器中运行了一些网络应用,要让外部访问

MySQL PHP 语法详解及实例代码

MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP. 在这些语言中,Mysql在PHP的web开发中是应用最广泛. 在本教程中我们大部分实例都采用了PHP语言. PHP提供了多种方式来访问和操作Mysql数据库记录.PHP Mysql函数格式如下: mysql_function(value,value,...); 以上格式中 function部分描述了mysql函数的功能,如 mysqli_connect($connect); mysqli_query($con