docker无法连接mysql镜像_关于Docker官方CentOS镜像无法启动mysqld的总结

很多童鞋反映,在Docker官方CentOS镜像中安装了Mysql server后,无法正常启动。

无法正常启动表现为两种情况:

1> 初始完数据库后,mysqld启动报错

2> systemctl start mysqld或者service mysqld start报错

首先重现一下现场。

第一种情况

一、启动CentOS镜像,安装Mysql Server

注意,Docker官方CentOS镜像latest版本是7.1。CentOS 7 yum源中默认没有Mysql Server的。

关于如何在CentOS 7中安装Mysql Server,可参考这篇博客 CentOS 7中如何安装mysql server

二、初始化数据库

[root@e80a5553b647 ~]# mysql_install_db

三、启动Mysqld服务

[root@e80a5553b647 ~]# mysqld2015-09-25 03:46:43 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2015-09-25 03:46:43 0 [Note] mysqld (mysqld 5.6.26) starting as process 775...2015-09-25 03:46:43 775 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld asroot!2015-09-25 03:46:43 775 [ERROR]Aborting2015-09-25 03:46:43 775 [Note] Binlog end

2015-09-25 03:46:43 775 [Note] mysqld: Shutdown complete

报以上错误。很多童鞋到这一步就不知所措了,怎么会启动失败呢?但细心的童鞋看到报错信息,就知道失败的原因在于mysqld命令是用roor身份执行的。

四、尝试以mysql身份启动Mysqld服务

[root@e80a5553b647 ~]# mysqld --user=mysql

2015-09-25 02:56:43 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2015-09-25 02:56:43 0 [Note] mysqld (mysqld 5.6.26) starting as process 167...2015-09-25 02:56:43 167 [Note] Plugin 'FEDERATED' isdisabled.

mysqld: Can't find file:'./mysql/plugin.frm'(errno: 13 - Permission denied)

2015-09-25 02:56:43 167 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to createit.2015-09-25 02:56:43 167 [Note] InnoDB: Using atomics to ref countbuffer pool pages2015-09-25 02:56:43 167 [Note] InnoDB: The InnoDB memory heap isdisabled2015-09-25 02:56:43 167 [Note] InnoDB: Mutexes and rw_locks useGCC atomic builtins2015-09-25 02:56:43 167 [Note] InnoDB: Memory barrier is notused2015-09-25 02:56:43 167 [Note] InnoDB: Compressed tables use zlib 1.2.3

2015-09-25 02:56:43 167 [Note]InnoDB: Using Linux native AIO2015-09-25 02:56:43 167 [Note]InnoDB: Using CPU crc32 instructions2015-09-25 02:56:43 167 [Note] InnoDB: Initializing buffer pool, size = 128.0M2015-09-25 02:56:43 167 [Note] InnoDB: Completed initialization ofbuffer pool2015-09-25 02:56:43 167 [ERROR] InnoDB: ./ibdata1 can't be opened in read-write mode

2015-09-25 02:56:43 167 [ERROR] InnoDB: The system tablespace must be writable!

2015-09-25 02:56:43 167 [ERROR] Plugin'InnoDB'init function returned error.

2015-09-25 02:56:43 167 [ERROR] Plugin'InnoDB'registration as a STORAGE ENGINE failed.

2015-09-25 02:56:43 167 [ERROR] Unknown/unsupported storage engine: InnoDB

2015-09-25 02:56:43 167 [ERROR] Aborting

。。。。。

还是启动失败。

第二种情况

以systemctl启动,

[root@e80a5553b647 ~]# systemctl start mysqld

Failedto get D-Bus connection: No connection toservice manager.[root@e80a5553b647 ~]# service mysqld start

Starting mysqld (via systemctl): Failedto get D-Bus connection: No connection toservice manager.[FAILED]

报“Failed to get D-Bus connection: No connection to service manager.”错误,在网上找了好久,原因在于该CentOS镜像为精简版,有很多包再制作的过程中没有安装。故导致systemctl命令无法启动。

基于第二种情况,很多童鞋就认为CentOS镜像不完善,导致mysql服务无法启动。

失败原因:

深究下去,第一种方式失败的原因在于第二步初始化数据库的时候是用的ROOT账户运行的。这样,会导致数据库的datadir(即/var/lib/mysql)目录的属主为root。

[root@e80a5553b647 ~]# ll /var/lib/mysql/total110600

-rw-rw---- 1 root root 50331648 Sep 25 04:46 ib_logfile0

-rw-rw---- 1 root root 50331648 Sep 25 04:46 ib_logfile1

-rw-rw---- 1 root root 12582912 Sep 25 04:46 ibdata1

drwx------ 2 root root 4096 Sep 25 04:46 mysql

drwx------ 2 root root 4096 Sep 25 04:46 performance_schema

因为mysqld在以ROOT账户执行时会出错,这个与数据库初始化无关,而是数据库基于安全的考虑,不推荐使用ROOT账户启动数据库 !!!

而此时,如果指定mysql用户运行mysqld命令,因为var/lib/mysql目录的属主为root,必然报出“mysqld: Can't find file: './mysql/plugin.frm' (errno: 13 - Permission denied)”错误。

正确的启动方式:

主要有以下两种:

1> 初始化数据库时指定以mysql用户运行,即 mysql_install_db  --user=mysql

启动mysql服务,同样有两种方式:

(1)  mysqld --user=mysql

(2)  mysqld_safe

2> 以 /etc/init.d/mysqld start 方式启动

总结:

1> 如果第一次以mysql_install_db初始化数据库,mysqld --user=mysql启动mysql服务失败后,再次用mysql_install_db  --user=mysql初始化数据库,还是会启动失败,其实看看来看看/var/lib/mysql/的属主就知道了,

[root@e80a5553b647 /]# ll /var/lib/mysql/total110600

-rw-rw---- 1 root root 12582912 Sep 25 05:57 ibdata1

-rw-rw---- 1 root root 50331648 Sep 25 05:57 ib_logfile0

-rw-rw---- 1 root root 50331648 Sep 25 05:57 ib_logfile1

drwx------ 2 mysql mysql 4096 Sep 25 05:57 mysql

drwx------ 2 root root 4096 Sep 25 05:57 performance_schema

只有mysql目录的属主变为mysql了,其它依旧是root,可通过chown -R mysql:mysql /var/lib/mysql重新设置目录的属性。

2> 启动mysql服务失败的原因还是在于对mysql不熟悉,建议看看mysql服务脚本,即/etc/init.d/mysqld。

3>  关于mysql的启动方式和停止方式(与docker无关)

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

(1)使用service启动

service mysqld start  在CentOS7中,相当于systemctl start mysqld

(2)使用脚本启动

/etc/inint.d/mysqld start

(3) 使用safe_mysqld或mysqld --user=mysql启动

关闭方式也有以下三种:

(1)使用service关闭

service mysqld stop 在CentOS7中,相当于systemctl stop mysqld

(2)使用脚本关闭

/etc/inint.d/mysqld stop

(3)mysqladmin shutdown

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云高级技术专家带你全面了解云主机性能评测

钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家。 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论&#xff0…

RabbitMQ控制台详解

文章目录属性说明overview→Totals所有队列的阻塞情况Ready待消费的消息总数Unacked待应答的消息总数Total总数 ReadyUnacked 属性说明Publishproducter pub消息的速率Publisher confirmbroker确认pub消息的速率Deliver(manual ack)ustomer手动确认的速率Deliver( auto ack)cu…

阿里云HBase携X-Pack再进化,重新赋能轻量级大数据平台

一、八年双十一,造就国内最大最专业HBase技术团队 阿里巴巴集团早在2010开始研究并把HBase投入生产环境使用,从最初的淘宝历史交易记录,到蚂蚁安全风控数据存储。持续8年的投入,历经8年双十一锻炼。4个PMC,6个committ…

2018阿里云双12年终大促主会场全攻略

2018阿里云双12年终大促活动已经于12月7日正式开启,从已开放的活动页面来看,活动分为两个阶段: 12月7日-12月23日的拉新返现阶段和12月24日-12月28日的TOP100英雄榜PK阶段。 活动核心亮点: 老会员拉新可享25%返现最高2.5万奖金&a…

RabbitMQ集群原理介绍

文章目录一、RabbitMQ默认集群原理1. RabbitMQ集群元数据的同步2. 为何RabbitMQ集群仅采用元数据同步的方式3. RabbitMQ集群发送/订阅消息的基本原理4. 客户端直接连接队列所在节点5. 客户端连接的是非队列数据所在节点7. 集群节点类型磁盘节点内存节点8. 总结二、RabbitMQ镜像…

mysql统计每周每个学校新增学生数量_深入学习之mysql(四)聚合函数

聚合函数:COUNT统计记录的条数、SUM求和函数、AVG求平均值、MAX求最大值、MIN求最小值一、COUNT练习:1、统计学校一共有多少个学生:mysql> SELECT COUNT(*) AS Total FROM t_student;-------| Total |-------| 13 |-------1 row in set (0…

阿里云物联网平台体验(树莓派+Python篇)

阿里云物联网平台体验(树莓派Python篇) 虽然对阿里云物联网平台比较熟悉了,从一开始就有幸参与了飞凤平台(Link Develop 一站式开发平台的前身)的一些偏硬件接入的工作。但是同时也见证了阿里云物联网团队从几十人到数百人的迅速扩张&#x…

阿里云物联网边缘计算加载MQTT驱动

写在前面 本文在LinkEdge快速入门样例驱动的基础上,加载了MQTT订阅的客户端,使得边缘端容器可以通过MQTT获得外部数据。 1. 系统需求 物联网边缘计算平台,又名Link IoT Edge[1]。在物联网边缘计算帮助文档中的 “快速入门”描述了…

RabbitMQ镜像策略set_policy

添加vhosts rabbitmqctl add_vhost <vhost>rabbitmqctl delete_vhost <vhost>rabbitmqctl list_vhosts [<vhostinfoitem> ...]参数设置格式&#xff1a; #设置 rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <a…

IBM推出可加快响应跨云网络威胁的开放技术 业界首次实现跨安全工具和跨云的搜索威胁功能,无需移动数据

&#xff08;2019年11月20日&#xff0c;美国纽约州阿蒙克&#xff09;IBM发布了Cloud Pak for Security&#xff0c;创新性地实现了业界首次无需从原始数据源移动数据而能连接任意安全工具、云和本地部署的系统。该平台现已可用&#xff0c;包括了用于搜索威胁的开源技术&…

mysql做文本挖掘_4graphlab简单文本挖掘

爬虫Python基础、数据分析扩展包Numpy、pandas、matplotlib&#xff0c;Python读取MySQL数据&#xff0c;Python爬虫及Scrapy框架&#xff0c;无监督机器学习算法聚类分析等&#xff0c;以及案例&#xff1a;互联网金融行业客户价值分析等。机器学习机器学习是一门多领域交叉学…

完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本

2018 年“双 11”的交易额又达到了一个历史新高度 2135 亿。相比十年前&#xff0c;我们的交易额增长了 360 多倍&#xff0c;而交易峰值增长了 1200 多倍。相对应的&#xff0c;系统数呈现爆发式增长。系统在支撑“双 11”过程中的复杂度和难度呈现指数级形式上升趋势。 作为…

重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准

重磅&#xff01;阿里巴巴工程师获得 containerd 社区席位&#xff0c;与社区共建云时代容器标准 11 月 29 日&#xff0c;CNCF containerd 社区正式宣布&#xff1a;两位阿里巴巴工程师正式获得 containerd 社区席位&#xff0c;成为 containerd 社区 Reviewer&#xff0c;未…

RabbitMQ管控台操作手册

文章目录一、MQ管控台配置1.1. 修改guest用户的默认密码1.2. 创建Virtual Hosts1.3. 创建用户1.4. 给Virtual Hosts指定用户1.5. 给Virtual Hosts创建监控用户1.6. 给Virtual Hosts指定监控用户二、 验证2.1.给proj-01项目配置mq连接信息2.2.为proj-01项目声明队列和交换机2.3.…

只有程序员才能读懂的三国演义(一)

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | popsuper1982责编&#xff5c;阿秃这是通过三国演义串起操作系统的原理。第一回&#xff1a;宴桃园豪杰三结义&#xff0c;开放平台启动内核话说天下大势&#xff0c;分久必合&#xff0c;合久必分。IT江湖起起伏伏&#xff…

基于协同过滤算法的推荐

基于协同过滤算法的推荐 &#xff08;本实验选用数据为真实电商脱敏数据&#xff0c;仅用于学习&#xff0c;请勿商用&#xff09; 数据挖掘的一个经典案例就是尿布与啤酒的例子。尿布与啤酒看似毫不相关的两种产品&#xff0c;但是当超市将两种产品放到相邻货架销售的时候&a…

python三菱_三菱机器人melfarxm.ocx控件的Python使用,MelfaRxMOCX,python,用法

1. 安装控件 \MelfaRXM\MelfaRXM_Dev\Redist\Installer2. 在WINDOWS/System32里找到MelfaRxM.ocx3.把OCX控件转成C#的DLLa.打vs的开发人员命令行b.把刚刚的OCX放到命令行显示的目录c.在命令输入 &#xff1a; aximp MelfaRxM.ocx生成的DLL就是pythonnet可用调用的DLL的4.p…

RabbitMQ 常用命令

# 查看当前所有用户 [rootVMTest ~]# rabbitmqctl list_users# 查看默认guest用户的权限 [rootVMTest ~]# rabbitmqctl list_user_permissions guest# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户 [rootVMTest ~]# rabbitmqctl delete_user gu…

如何基于阿里云搭建适合初创企业的轻量级架构?

----基于阿里云搭建的适合初创企业的轻量级架构 前言 在项目的初期往往存在很多变数&#xff0c;业务逻辑时刻在变&#xff0c;而且还要保证快速及时&#xff0c;所以&#xff0c;一个灵活多变、快速部署、持续集成并可以适应多种情况的架构便显得尤为重要。本文主要介绍基于阿…

年底了,程序员如何谈加薪?

前两天&#xff0c;我和朋友一块出去吃饭&#xff0c;他说了一个哭笑不得的事儿&#xff1a;“我面了一个2年经验的男孩&#xff0c;张嘴就要20k&#xff0c;我去了&#xff0c;我在公司呆了7年啊&#xff0c;才22k好吗&#xff1f;” 其实&#xff0c;他的问题并不是特例&…