Ubuntu 11.04 - 无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(13)

Jam*_*ber 8 mysql ubuntu ubuntu-11.04

我现在用谷歌搜索了2天,最初得到了一个

'/var/run/mysqld/mysqld.sock' (2)
Run Code Online (Sandbox Code Playgroud)

我通过使用:

sudo touch /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld/
Run Code Online (Sandbox Code Playgroud)

现在我收到错误:

 '/var/run/mysqld/mysqld.sock' (13)
Run Code Online (Sandbox Code Playgroud)

所以一切都有正确的权限,文件存在.有什么想法吗?

[编辑]

有它工作,虽然我不确定如何.我做aa-logprofroot,没有任何改变,生气,然后重新设置它开始工作.

avi*_*ano 6

In my case, running mysqld_safe created a new mysqld.sock file.

$ cd /etc/init.d/
$ mysqld_safe
Run Code Online (Sandbox Code Playgroud)

You'll probably won't get the prompt back, but if you restart your session, a mysqld.sock file will be somewhere. Find it with

$ sudo find / -type s | grep mysqld.sock
Run Code Online (Sandbox Code Playgroud)


sar*_*old 5

您不能(绝对不能)用/var/run/mysqld/mysql.sock常规文件替换文件系统管道.您需要使用mkfifo(1)创建pipe(7)客户端用于与mysql服务器通信的.

(13)可能意味着你有一个权限被拒绝错误返回,EACCES(通常有十进制值13- 是的,我已经看过很多).

如果正确配置了文件系统权限,则可能是由强制访问控制工具(如 AppArmor,SELinux,TOMOYOSMACK)拒绝 访问.

AppArmor默认预安装在Ubuntu系统上,可能拒绝访问管道.检查/var/log/syslog,/var/log/audit/audit.logdmesg(1)输出,看起来像这样的消息:

type=AVC msg=audit(1320723925.179:45115): apparmor="DENIED"
operation="open" parent=1 profile="/usr/sbin/ntop"
name="/usr/share/ntop/html/PlotKit/excanvas.js" pid=1835 comm="ntop"
requested_mask="r" denied_mask="r" fsuid=122 ouid=0
Run Code Online (Sandbox Code Playgroud)

(但name=/var/run/mysqld/mysql.sock改为.)

如果你有这样的错误信息,运行aa-logprof作为root并回答问题.有关配置AppArmor的更多信息可以在apparmor.d(5)联机帮助页或某些各种Wiki页面中找到.