为什么mysqld启动报错

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在一台ubuntu测试机器上启动一个mysql实例,本来应该是一件很简单的事情, 启动的时候却报错了: mysqld_safe --defaults-file=/etc/mysql/my3307.cnf 160218 15:45:13 mysqld_safe Can't log to
在一台ubuntu测试机器上启动一个mysql实例,本来应该是一件很简单的事情,
启动的时候却报错了:

mysqld_safe --defaults-file=/etc/mysql/my3307.cnf
160218 15:45:13 mysqld_safe Can't log to error log and syslog at the same time.  Remove all --log-error configuration options for --syslog to take effect.
160218 15:45:13 mysqld_safe Logging to '/var/log/mysql/error3307.log'.
160218 15:45:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql3307
160218 15:45:15 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld3307.pid ended


查看错误日志 /var/log/mysql/error3307.log
发现是由于权限问题无法创建ibdata文件:

160218 12:19:09 InnoDB: Completed initialization of buffer pool
160218 12:19:09  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.


查看目录,理论上应该有读写权限的啊:

ls -ld /var/lib/mysql3307 drwx------ 4 mysql mysql 4096 Feb 18 15:09 /var/lib/mysql3307



难道还有其它什么权限限制?

用dmesg看一下,确实有一些报错,


[4489099.208660] type=1400 audit(1455768562.142:57): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/lib/mysql3307/ibdata1" pid=19775 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=105 ouid=105



查看/usr/sbin/mysqld的配置:


vi /etc/apparmor.d/usr.sbin.mysqld


增加mysql3307目录的权限,重启apparmor:


 /var/lib/mysql3307/ r,
 /var/lib/mysql3307/** rwk,




/etc/init.d/apparmor restart


再次重新启动mysqld,发现还是报错,不过这次报错的信息不一样了:

160218 12:44:03 [ERROR] Can't start server : Bind on unix socket: Permission denied
160218 12:44:03 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld3307.sock ?
160218 12:44:03 [ERROR] Aborting

dmesg也能看到错误消息:
[4491181.040673] type=1400 audit(1455770643.975:99): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/run/mysqld/mysqld3307.sock" pid=24093 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=105 ouid=105


到/etc/apparmor.d/usr.sbin.mysqld增加配置,重启apparmor
 /var/run/mysqld/mysqld3307.pid rw,
 /var/run/mysqld/mysqld3307.sock w,
 /run/mysqld/mysqld3307.pid rw,
 /run/mysqld/mysqld3307.sock w,



再次重启mysqld,还是报错,不过这次是新的报错:
160218 12:57:27 [Note] Server socket created on IP: '0.0.0.0'.
160218 12:57:27 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
160218 12:57:27 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld3307.pid ended



跑一下mysql_install_db --defaults-file=/etc/mysql/my3307.cnf
这次mysqld终于可以正常启动了:

160218 14:44:59 [Note] Server socket created on IP: '0.0.0.0'.
160218 14:44:59 [Note] Event Scheduler: Loaded 0 events
160218 14:44:59 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.46-0ubuntu0.14.04.2'  socket: '/var/run/mysqld/mysqld3307.sock'  port: 3307  (Ubuntu)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
运维 监控 安全
云HIS医疗管理系统源码——技术栈【SpringBoot+Angular+MySQL+MyBatis】
云HIS系统采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展;支持多样化灵活配置,提取大量公共参数,无需修改代码即可满足不同客户需求;服务组织合理,功能高内聚,服务间通信简练。
485 4
|
运维 监控 搜索推荐
客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台
阿里云的Milvus服务以其性能稳定和功能多样化的向量检索能力,为识货团队在电商领域的向量检索场景中搭建业务系统提供了强有力的支持。该服务的分布式扩展能力不仅可靠,而且能够适应日益增长的数据规模。
客户案例 | 识货基于向量检索服务 Milvus 版搭建电商领域的向量数据检索平台
|
8月前
|
Java API 数据处理
方法引用和 Lambda 表达式详解
本文详细解析了Java 8中方法引用和Lambda表达式的特性和应用。Lambda表达式通过简化匿名内部类语法,提供函数式接口的实现方式,增强代码可读性与灵活性;方法引用作为其特例,进一步优化了对现有方法的调用。两者结合Stream API,极大提升了数据处理效率与代码简洁性。文章从理论到实践,深入探讨设计思想、语法特性及应用场景,帮助开发者掌握这两项核心工具,提升编程效率与代码质量。
166 0
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。
|
存储 文件存储
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问(下)
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问
|
Ubuntu 网络协议 Linux
在Linux中,发行版和内核有什么区别?
在Linux中,发行版和内核有什么区别?
|
物联网 数据管理
HarmonyOS学习路之开发篇—网络与连接(蓝牙开发 一)
蓝牙是短距离无线通信的一种方式,支持蓝牙的两个设备必须配对后才能通信。HarmonyOS蓝牙主要分为传统蓝牙和低功耗蓝牙(通常称为BLE,Bluetooth Low Energy)。传统蓝牙指的是蓝牙版本3.0以下的蓝牙,低功耗蓝牙指的是蓝牙版本4.0以上的蓝牙。
|
JavaScript Java 测试技术
基于SpringBoot+Vue的食品安全信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的食品安全信息管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
199 0
|
分布式计算 算法 Java
Spark shuffle、RDD 算子【重要】
Spark shuffle、RDD 算子【重要】
705 0