当我运行命令
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审核[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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510审核[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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510审核[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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核: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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核: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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核: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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510内核: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
1月08日23:44:48 monal-Lenovo-IdeaPad-Z510 mysqld_safe [30539]:170108 23:44:48来自pid文件/var/run/mysqld/mysqld.pid的mysqld_safe mysqld已结束
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30867]:pam_unix(cron:session):为用户root打开的会话(uid = 0)
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30868] :( root)CMD(命令-v debian-sa1> / dev / null && debian-sa1 1 1)
1月08日23:45:01 monal-Lenovo-IdeaPad-Z510 CRON [30867]:pam_unix(cron:session):用户root会话已关闭
4 回答
只需运行此命令
I add this answer to others who didn't find satisfying answer.
首先,按照一个简单的tutorial将别名和配置复制并设置到新的所需数据目录(
datadir
) .该教程展示了如何:
停止mysql服务,
备份并将现有数据库复制到新位置
添加AppArmor规则 .
重新启动服务 .
然后,当我将
datdir
移动到/media/data/mysql/
时,我遇到了这个确切的问题(AppArmor访问被拒绝),并且由于AVC apparmor="DENIED" operation="open" prof.....
,最后一步(重启mysql服务)失败了 .首先,正如@reihaneh所提到的,添加AppArmor读写规则:在vim
/etc/apparmor.d/usr.sbin.mysqld
末尾添加/db/data/mysql r,
和/db/data/mysql** rwk,
(不要删除逗号)Finally, the only thing left to do (not mentioned in tutorials) is to change the privileges for the new datadir to the MySQL-Server user and mysql group .
我用nautilus这样做:
Run nautilus as SU (sudo nautilus) -> right click on the NEW datadir -> Properties -> Permissions
然后选择所有者:
MySQL - MySQL Server
和组:
mysql
首先停止mysql实例 . 您需要将确切的/ var / lib / mysql目录复制到新数据目录,同时保留其权限 . 所以使用rsync和-a选项
还要更改mysql.cnf文件中的数据目录路径
您需要为apparmor添加别名,以便它允许mysql写入新目录
要添加别名:
然后将此行添加到底部
重启apparmor
现在启动mysql . 它应该工作
如果您的mysql正在运行,并且您想要更改目录流,请执行以下步骤:从_439861更改datadir_更改所有者或为新目录设置高权限
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