为什么mysqld启动报错

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在一台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)


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL 数据安全/隐私保护
安装mysqld
mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
50 0
|
监控
zabbix通过yum安装,启动报错zabbix-agent.service never wrote its PID file. Failing.
zabbix通过yum安装,启动报错zabbix-agent.service never wrote its PID file. Failing.
243 0
postfix 启动报错
今天在启动postfix的时候,查看centos中的postfix日志 more /var/log/maillog,出现了如下报错, Apr 28 09:04:44 PaulV1 aliasesdb[23836]: /usr/sbin/postconf: fatal: paramet...
2769 0
|
关系型数据库 MySQL
msyql四种启动方式
1 mysql默认启动配置文件my.cnf顺序 第一步:/etc/my.cnf   第二步:/etc/mysql/my.cnf   第三步:/usr/local/mysql/etc/my.
1388 0
|
监控 关系型数据库 MySQL
解决mysqld无法启动的记录
服务器重启后,mysqld无法启动,启动命令是:service mysqld start mysql的错误日志如下图: mysql错误日志 日志中显示了两个错误,一是:Permission denied;二是:可能有一个mysqld服务器运行在3330端口了; netstat -tunlp 也没有看到3330端口在运行: image.png ps aux | grep mysql 也没有mysql相关进程在运行: image.png 这就将第二种错误排除了。
2516 0
|
Web App开发 监控 关系型数据库
|
Java 数据库连接 数据安全/隐私保护
|
分布式计算 Hadoop 数据安全/隐私保护
|
监控 关系型数据库 MySQL