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

将 web app 部署到云主机(vultr in this case)

  • 系统为 Ubuntu 16.04
  • 完成各类依赖安装(包括 supervisor、nginx)
  • 安装 MySQL server(5.7.23)

配置 mysql-server

  • 更改默认字符为 UTF-8 (Change MySQL default character set to UTF-8 in my.cnf?

  • 注意 Ubuntu 下 的 /etc/myql/ 目录中,存在多个文件:
    /etc/mysql/
    其中 my.cnf -> /etc/alternatives/my.cnf, 而 /etc/alternatives/my.cnf -> mysql.cnf

  • 默认配置在 *mysql.conf.d/mysqld.cnf 中:
    /etc/mysql/mysql.conf.d/mysqld.cnf

  • 将配置写到 /etc/mysql/my.cnf 中:
    /etc/mysql/my.cnf
    注意: 保留文件中原有的两条 directory

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

# For Ubuntu:
sudo service mysql start;

# For CentOS or RHEL:
sudo service mysqld start

sudo /etc/init.d/mysqld start

注: web app 启动前,需要 flask db upgrade


后来远程登录 web app 时,报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock', 并且无法 stop 或者 restart

  • 首先,检查 MySQL 的默认配置文件 **/etc / mysql / mysql.conf.d / mysqld.cnf **:
    /etc/mysql/mysql.conf.d/mysqld.cnf
    可以发现 socketpid-file 均设置在 /var/run/mysqld/ 下。

  • 然后,检查云主机相应目录,发现没有相应文件,故报错。

  • 运行 sudo find / -type s 命令,查找所有 socket 文件

To find all socket files on your system

  • 自建相应的目录
sudo mkdir -p /var/run/mysqld/
  • 自建相应的文件
sudo touch /var/run/mysqld/mysqld.pid
sudo touch /var/run/mysqld/mysqld.sock
  • 更改目录及文件所属权限为 mysql:mysql
sudo chown mysql:mysql -R /var/run/mysqld
  • 重启
sudo service mysql restart

注:如果没有相应的目录(/var/run/mysqld),可以自建目录,然后依据上述方法排错。Why is “mysqld.pid” and “mysqld.sock” missing from my system even though the values are set in “my.cnf?”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值