【问题标题】:Unable to start MySql service无法启动 MySql 服务
【发布时间】:2017-05-23 00:27:17
【问题描述】:

当我运行命令时

mysql -u root -p

我遇到了一个错误

ERROR 2002 (HY000): 无法通过套接字 '/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

【问题讨论】:

  • ps ax | grep mysql检查你的mysql是否正在运行(我认为没有)
  • @Blag 不,它没有运行。
  • 同样的问题,你解决了吗?
  • 同样的问题,正在寻找解决方案

标签: mysql ubuntu-16.04


【解决方案1】:

只需运行此命令

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

【讨论】:

  • 请在您的答案中添加解释。
  • 嗨,对我来说它返回:mysql_install_db: [ERROR] unknown variable 'ldata=/var/dmh/mysql/' 2017-10-02 13:00:02 [ERROR] Unrecognized options
【解决方案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。它应该工作

【讨论】:

    【解决方案3】:

    如果您的 mysql 正在运行并且您想更改目录流程,请执行以下步骤: 从 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

    最后在vim /etc/apparmor.d/usr.sbin.mysqld末尾添加/db/data/mysql r/db/data/mysql** rwk
    /etc/init.d/apparmor reload /etc/init.d/mysql start

    但是,如果您的 mysql 不再工作,请删除它并执行这些步骤。 如果您需要数据,请将它们复制到新目录。 删除步骤: apt-get autoremove mysql-server

    apt-get remove --purge mysql-\*

    apt-get install mysql-server

    【讨论】:

      【解决方案4】:

      我将此答案添加给其他没有找到满意答案的人。

      首先,按照简单的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

      最后,唯一要做的事情(教程中未提及)是将新 datadir 的权限更改为 MySQL-Server 用户和 mysql 组

      我使用 nautilus 这样做:

      以 SU 身份运行 nautilus (sudo nautilus) -> 右键单击​​新数据目录 -> 属性 -> 权限

      然后选择所有者:MySQL - MySQL Server
      和群:mysql

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-08
        • 2021-10-18
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        • 2021-03-11
        相关资源
        最近更新 更多