【问题标题】:Ubuntu 11.04 - Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)Ubuntu 11.04 - 无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (13)
【发布时间】:2012-01-04 15:11:12
【问题描述】:

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

'/var/run/mysqld/mysqld.sock' (2)

我使用以下方法解决了这个问题:

sudo touch /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld/

现在我得到了错误:

 '/var/run/mysqld/mysqld.sock' (13)

所以一切都具有正确的权限并且文件存在。有什么想法吗?

[编辑]

得到它的工作,虽然我不确定如何。我将aa-logprof 设置为root,没有任何改变,很生气,然后重新设置它开始工作。

【问题讨论】:

    标签: ubuntu ubuntu-11.04 mysql


    【解决方案1】:

    在我的例子中,运行 mysqld_safe 创建了一个新的 mysqld.sock 文件。

    $ cd /etc/init.d/
    $ mysqld_safe
    

    您可能不会收到提示,但如果您重新启动会话,mysqld.sock 文件将在某处。用

    找到它
    $ sudo find / -type s | grep mysqld.sock
    

    【讨论】:

    • 很好,我得到了这个错误(我猜)因为我取消了一个巨大的更改表,我没有找到任何锁定文件,但 mysqld_safe 修复了这个!谢谢。
    【解决方案2】:

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

    (13) 可能意味着你有一个 permission denied 错误返回,EACCES(通常有十进制值13——是的,我见过很多)。

    如果文件系统权限配置正确,您的访问可能会被mandatory access control 工具拒绝,例如AppArmorSELinuxTOMOYOSMACK

    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
    

    (但用 name=/var/run/mysqld/mysql.sock 代替。)

    如果您有这样的错误消息,请将aa-logprof 运行为root 并回答问题。更多关于配置 AppArmor 的信息可以在apparmor.d(5) manpage 或一些various wiki pages 中找到。

    【讨论】:

    • 非常感谢您的回复。总是希望我花更多的时间在 mysql 上,而不仅仅是查询。因此,当我执行 mysql start "ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)" 时出现此错误。以前我启动mysql没有问题:/
    • 111104 11:54:40 [注意] 插件 'FEDERATED' 已禁用。 111104 11:54:40 InnoDB:初始化缓冲池,大小 = 8.0M 111104 11:54:40 InnoDB:完成缓冲池初始化 111104 11:54:43 InnoDB:已启动;日志序列号 0 44233 111104 11:54:44 [Note] 事件调度程序:已加载 0 个事件 111104 11:54:44 [Note] /usr/sbin/mysqld:准备连接。版本:'5.1.54-1ubuntu4' 套接字:'/var/run/mysqld/mysqld.sock' 端口:3306(Ubuntu
    • 嘿,这看起来像是一个改进; 111Connection refused。重新创建套接字后是否重新启动服务器?服务器是否配置为使用该路径名?
    • mysql.sock 不是管道/fifo,它是本地 unix 套接字。 you 无法创建,mysql 服务器必须在启动时创建它。 (如果目录权限错误,或者服务器在客户端查看的其他目录中创建套接字,则可能不会)
    • 我在运行 rsync 命令恢复根文件系统下某些文件夹的部分备份后遇到了类似的问题(即:rsync -avc ${SOME_RESTORE_DIR}/ /,但不包括/var/lib/mysql)。在我的例子中,/ 的权限在此操作之后被设置为 700,这阻止了mysqld 的启动。要修复它,我必须chmod 755 / 并重新启动mysqld。如果找不到,这可能也会在服务器上引起很多问题;-)
    【解决方案3】:

    您是否尝试删除 .lock 文件并重新启动 mysqld ?

    【讨论】:

    • 这个 .lock 文件在哪里?
    【解决方案4】:

    您是否检查过 mysql 服务器mysqld 正在运行?另外,请检查系统消息日志,看看它是否在抱怨什么。

    【讨论】:

    • 它正在运行,虽然它目前没有启动。看到下面的评论。
    猜你喜欢
    • 2015-09-25
    • 2017-01-16
    • 2017-11-08
    • 2016-02-17
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多