为什么mysqld启动报错

在一台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)

时间: 2024-12-06 09:26:22

为什么mysqld启动报错的相关文章

mysql 修改目录后mysqld启动报错

在一台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 ef

linux系统,mysql5.6,启动报错,存储引擎是innodb 。。。。

问题描述 linux系统,mysql5.6,启动报错,存储引擎是innodb .... 数据库是之前从另外的linux服务器拷过来的,当时拷了ibdata和数据库文件,经过加权,改路径,当时启动成功了.用了一段时间,中间重启过几次,也没有问题,就没有去看mysql.err文件.但是昨晚,重启后报错the server quit without updating pid这个问题之前遇到过,按着之前的方法试了,但是不行.看错误日志 mysql.err,结果 好多一样的这个错误: 2015-09-10

tomcat启动报错-同一项目在我的电脑上启动报错(缺少jar包,其实是有的),但在别人的电脑上却能正常启动,请求帮助

问题描述 同一项目在我的电脑上启动报错(缺少jar包,其实是有的),但在别人的电脑上却能正常启动,请求帮助 解决方案 如果是这样,那说明你引入的有问题啊, 1. 重新引入jar一下!!!对着jar右键add- 2. clean一下!!! 3. 重新发布项目 解决方案二: web项目直接放在lib文件夹下,就不需要add了吧, 此外,这项目在别的电脑可以正常运行 解决方案三: 有可能是jar包没有引入,在build path 把项目所有jar包都引进去 解决方案四: 谢谢各位,问题已解决.缘由是t

javaweb-在ssh 中 用ServletActionContext获取session时启动报错

问题描述 在ssh 中 用ServletActionContext获取session时启动报错 ServletActionContext.getRequest().getSession(); 怎么才能在启动的时候就有ServletActionContext,而不用在ActionSupport处理请求时在获取 解决方案 是报空指针吗? 没有请求时 ServletActionContext.getRequest() 为null 解决方案二: http://blog.csdn.net/suncaoyo

配置-cruisecontrol集成SVN启动报错?

问题描述 cruisecontrol集成SVN启动报错? 用CC每日构建是启动配置报错只要是SVN自动更新代码 下面是错误信息 net.sourceforge.cruisecontrol.CruiseControlException: svn failed with exception at net.sourceforge.cruisecontrol.util.CommandExecutor.executeAndWait(Com mandExecutor.java:115) at net.sou

servlet-Red5-1.0集成到eclipse中启动报错

问题描述 Red5-1.0集成到eclipse中启动报错 2015-7-4 19:09:27 org.apache.catalina.core.ApplicationContext log 严重: StandardWrapper.Throwable org.springframework.beans.factory.access.BootstrapException: Unable to initialize group definition. Group resource name [clas

大数据 flume ng-大数据:flume-ng启动报错

问题描述 大数据:flume-ng启动报错 flume-ng1.5.0启动报错java.lang.OutOfMemoryError: Direct buffer memory. flume-env.sh内存配置4G绝对足够了,请求解决方法 解决方案 同样的flume环境,部署到不同的linux机器上,有些机器正常,有些机器启动就报这个错误 解决方案二: 检查下jvm的配置,jvm有最大内存上限,尽管物理机器有更大的内存.

sql2008启动报错:应用程序的组件中发生了无法处理的异常和值不能为空viewinfo

sql2008 启动报错:应用程序的组件中发生了无法处理的异常和值不能为空 viewinfo(已解决!) 1.重启sql(无效) 2.,重启系统(无效) 3.重装.net(无效) 后发现问题出在 这是因为临时处理路径出现异常造成的,主要是C:\Users\Administrator\AppData\Local\Temp下的文件夹名为[2]的文件夹出现了问题,解决方法如下: 进入C:\Users\Administrator\AppData\Local\Temp路径,也可以在C盘地址栏输入此路径进入

安装完Nginx后启动报错

安装完Nginx之后,启动报错. [vagrant@localhost sbin]$ sudo ./nginx ./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 执行ldd命令,找到Nginx的依赖共享库文件. vagrant@localhost sbin]$ ldd $(which /usr/local/ng