无法启动MySql服务

时间:2017-01-08 18:28:17

标签: mysql ubuntu-16.04

当我运行命令

mysql -u root -p

我收到了错误

  

ERROR 2002(HY000):无法通过socket' /var/run/mysqld/mysqld.sock'连接到本地MySQL服务器; (2)

当我尝试运行mysql服务时

service mysql start

它会在消息

时超时
  

mysql.service的作业失败,因为超时超时。请参阅" systemctl status mysql.service"和" journalctl -xe"详情。

日志

Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:210): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:211): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:212): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:213): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 mysqld_safe[30539]: 170108 23:44:48 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30868]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session closed for user root

4 个答案:

答案 0 :(得分:2)

首先停止mysql实例。您需要将确切的/ var / lib / mysql目录复制到新数据目录,同时保留其权限。所以使用rsync和-a选项

sudo rsync -av /var/lib/mysql /db/data/

同时更改mysql.cnf文件中的数据目录路径

您需要为apparmor添加别名,以便它允许mysql写入新目录

添加别名:

sudo nano /etc/apparmor.d/tunables/alias

然后将此行添加到底部

alias /var/lib/mysql/ -> /db/data/mysql

重新启动apparmor

sudo systemctl restart apparmor

现在启动mysql。它应该工作

答案 1 :(得分:0)

如果您的mysql正在运行,并且您想要更改目录流,请执行以下步骤: 从<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd"> <jboss-web> <context-root>yourWebappContextRoot</context-root> </jboss-web> 更改datadir 更改所有者或为新目录设置高权限 vim /etc/mysql/mysql.conf.d/mysqld.cnf 您应该更改chown mysql.mysql /yourdir/mysql

vim /etc/apparmor.d/tunables/alias

最后在alias /var/lib/mysql/ -> /yourdb/mysql结束时添加/db/data/mysql r/db/data/mysql** rwk vim /etc/apparmor.d/usr.sbin.mysqld /etc/init.d/apparmor reload

但是,如果你的mysql不再工作,请删除它并流动这些步骤。 如果需要将数据复制到新目录中。 删除步骤: /etc/init.d/mysql start

apt-get autoremove mysql-server

apt-get remove --purge mysql-\*

答案 2 :(得分:0)

我将此答案添加到找不到满意答案的其他人中。

首先,遵循简单的tutorial,将别名和配置复制并设置到新的所需数据目录(datadir)。

该教程显示了如何:

  1. 停止mysql服务,
  2. 备份现有数据库并将其复制到新位置
  3. 添加AppArmor规则。
  4. 重新启动服务。

然后,将datdir移至/media/data/mysql/时遇到了这个确切的问题(AppArmor访问被拒绝),最后一步(重启mysql服务)由于AVC apparmor="DENIED" operation="open" prof.....而失败。 >

首先,如@reihaneh所述,添加AppArmor读写规则: 在vim /db/data/mysql r,的末尾添加/db/data/mysql** rwk,/etc/apparmor.d/usr.sbin.mysqld(不要删除逗号)

最后,剩下要做的唯一一件事(本教程中未提及)是将新数据目录的特权更改为MySQL-Server用户和mysql组

我用鹦鹉螺这样做的:

以SU(sudo nautilus)身份运行nautilus->右键单击NEW datadir-> Properties->权限

然后选择所有者:MySQL - MySQL Server
并分组:mysql

答案 3 :(得分:-2)

只需运行此命令

sudo mysql_install_db --user=mysql --basedir=/usr/ --ldata=/var/lib/mysql/