【问题标题】:Mysql can't connect to local server through socket on Amazon EC2Mysql 无法通过 Amazon EC2 上的套接字连接到本地服务器
【发布时间】:2013-11-08 08:08:45
【问题描述】:

我在 Amazon EC2 上打开了我的应用程序(在 Rails 中)并遇到了错误 - 因此我检查了日志,结果如下:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

10 小时前一切正常。有什么问题?流量大吗? 该应用在 Micro Instance 上运行。

如何解决这个问题以及以后如何避免它?

非常感谢

编辑:

sudo find / -type s
---
/tmp/.sock
/dev/log
/var/lib/apt-xapian-index/update-socket
/run/mysqld/mysqld.sock
/run/acpid.socket
/run/dbus/system_bus_socket
/run/udev/control
find: `/proc/4739/task/4739/fd/5': No such file or directory
find: `/proc/4739/task/4739/fdinfo/5': No such file or directory
find: `/proc/4739/fd/5': No such file or directory
find: `/proc/4739/fdinfo/5': No such file or directory

【问题讨论】:

  • 听起来像this
  • 您是否尝试过locate 您的mysqld.sock 文件...使用定位mysqld.sock 命令。路径是否与您的myconf 文件中的socket=path 匹配??
  • 大家好,感谢您的回答。 locate mysqld.sock 返回空输出,当我运行 sudo find / -type s 时,我看到了 /run/mysqld/mysqld.sock - 如何处理?

标签: mysql ruby-on-rails ruby amazon-web-services amazon-ec2


【解决方案1】:

要解决这个错误,首先找到你的套接字文件,在终端中运行以下命令

mysqladmin variables | grep socket

对我来说,这给出了:

| socket              | /var/run/mysqld/mysqld.sock

然后,在 Rails 应用程序中添加一行:config/database.yml:

development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock

这将解决这个问题。

【讨论】:

    【解决方案2】:

    mysql-server 默认情况下未安装在 Amazon Linux AMI 上。使用这些命令来安装它:

    $ sudo yum install mysql-server
    $ sudo chkconfig mysqld on
    $ sudo /etc/init.d/mysqld start
    $ mysqladmin -u root password NEWPASSWORD
    $ mysql -u root -p
    

    【讨论】:

      【解决方案3】:

      在我的例子中,我使用了以下命令:

      project_folder > mysql.server start 
      

      系统返回成功消息后,它工作正常。

      【讨论】:

        【解决方案4】:

        在我的情况下,服务器显然在某个时候重新启动,并且 mysql 没有在它启动时启动。我只是输入了启动命令,它就起作用了:

        sudo service mysqld start
        

        【讨论】:

        • sudo systemctl start mysqld.service,取决于 OP 的系统。在这种情况下,可以使用sudo systemctl enable mysqld.service 自动为将来的重启。
        【解决方案5】:

        here 交叉发布我的回复。

        我在 ec2 实例上遇到了同样的问题。这些instructions 非常适合我:


        Redhat Enterprise Linux - RHEL 5 / 6 MySQL 安装

        以 root 用户身份输入以下命令:

        yum install mysql-server mysql
        

        Redhat Enterprise Linux - RHEL 4/3 MySQL 安装

        以 root 用户身份输入以下命令:

        up2date mysql-server mysql
        

        启动 MySQL 服务

        要启动 mysql 服务器,请键入以下命令:

        chkconfig mysqld on
        /etc/init.d/mysqld start
        

        设置 mysql root 密码

        键入以下命令为root用户设置密码:

        mysqladmin -u root password NEWPASSWORD
        

        测试 mysql 连接性

        键入以下命令以连接到 MySQL 服务器:

        $ mysql -u root -p
        

        【讨论】:

          【解决方案6】:

          找到您的locate my.cnf 文件,请参阅socket = ../../mysql.sock 行 你需要用你的路径替换路径为

          socket = /run/mysqld/mysqld.sock

          如果路径匹配,请告诉我

          【讨论】:

          • 感谢您的回答阿米特。 locate my.cnf的输出是/etc/mysql/my.cnf,现在怎么更新?
          • sudo vim /etc/mysql/my.cnf 并查找socket=../../mysql.sock 行并查看套接字的路径是否与/run/mysqld/mysqld.sock 相同,否则将其替换并按Esc + :+ @987654330 保存文件@
          • 我做了这个更新 - 以前的路径是/var/run/mysqld/mysqld.sock,所以我改变了它。但是,仍然是同样的问题。我也尝试重新启动nginx,但这对我没有帮助。但是 - 在日志中仍然是旧路径 - Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) (Mysql2::Error)
          • 试试sudo /etc/init.d/mysql restart
          猜你喜欢
          • 2011-01-12
          • 2015-04-11
          • 2019-07-03
          • 2017-01-21
          • 2013-03-04
          • 2020-11-14
          • 2017-10-07
          • 2013-02-17
          相关资源
          最近更新 更多