当我运行命令
时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
答案 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
)。
该教程显示了如何:
然后,将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/