zoukankan      html  css  js  c++  java
  • Centos7 登录mysql 出现mysql.sock不存在

    记一次纠错大战

    本来今天开开心心地部署nginx和uwsgi到我的Django服务器,刚想给老师演示一遍我这项目如何酷炫时,一登陆就出现mysql连接不上了

    (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)")

    这可把我急坏了,然后到服务器上看(用的时百度云BCC),发现mysql连接时一直报:

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

    我去这个目录下发现有这个sock文件啊,为啥连不上呢?上网查了发现说是加权限,我也一顿操作:

    chown -R root:root /var/lib/mysql   (别人都用mysql用户,就我直接弄root用户来搞)

    结果还是不行,着急啊。那我就重装一下mysql,肯定后面可以的吧。

    于是花了15分钟重装配置好,接着,再打开服务:

    service mysql start

    日常连接 mysql -u root

    OK,连上了

    quit;

    再连一次,failed,又是这个

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

    头大!!看了一下这个目录,又没有sock文件了。这个sock文件是每次mysql服务启动都会生成一次,看来mysql有点问题。

    看了网上的解决方法:

    1.#su mysql

    2.$/usr/bin/mysql_install_db     //重建授权表

    3.$/usr/bin/mysqld_safe &

    4.$/usr/local/bin/mysql                //测试

    mysq>bye;

    我在第二步还是很顺利的执行,到了第三步就卡死了

    [root@ bin]# mysqld_safe &
    [1] 38305
    [root@ bin]# 190315 20:49:20 mysqld_safe Logging to '/var/log/mysqld.log'.
    190315 20:49:20 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    190315 20:49:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
    我靠,这个法子也不行啊。

    后面想了想,既然你这个sock每次启动都会生成一次,那么是不是/var/lib/mysql/下面的文件都是每启动一次mysql就会生成一次?

    于是有了个大胆的想法,嘿嘿嘿

    我先执行service mysqld stop (停止mysql服务),,然后再rm -rf /var/lib/mysql/* (删除/var/lib/mysql下的所有文件)

    再service mysql start (启动mysql服务。)这次很顺畅,不像之前的启动就会卡住

    执行mysql -u root(顺利执行,舒服)

    mysql的log查看 /var/log/mysqld.log(启动一次服务就会写入log,但是连接mysql的不写入)


    20190322更新 作死想写爬虫爬自己的网站,结果搞了mysql又出现上面的问题。

    上面的方法治标不治本,建议多查日志。

    老问题,在连接mysql报错:

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

    但是我们这个目录下确实没有mysql.sock,这回不要删除mysql目录下的文件了,因为我们的数据库文件也会一并删除,所以我们要找一下这个问题的本源了。先看看服务是否开启,命令 :systemctl start mysqld.service

    打开mysqld发现一直卡住,肯定有问题,到/var/log/mysqld.log查看日志:

    2019-03-22 10:41:08 8176 [Note] InnoDB: Initializing buffer pool, size = 50.0M

    InnoDB: mmap(53657600 bytes) failed; errno 12
    2019-03-22 10:41:08 8176 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
    2019-03-22 10:41:08 8176 [ERROR] Plugin 'InnoDB' init function returned error.
    2019-03-22 10:41:08 8176 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
    2019-03-22 10:41:08 8176 [ERROR] Unknown/unsupported storage engine: InnoDB
    2019-03-22 10:41:08 8176 [ERROR] Aborting

    之前有在my.conf中设置这个InnoDB的缓冲区大小为50M,现在发现说是缓存分配失败。

    查看缓存

    free或者swapon –s

    如果swap中为0       0   0的话就是没有分配缓存,那我们要分配一下。

    一.添加swap分区

    使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):

    1.  dd  if=/dev/zero  of=/swapfile  bs=1024  count=1024

    [root@instance-xglfp5i0 etc]# dd if=/dev/zero of=/swapfile bs=1M count=1024
    记录了1024+0 的读入
    记录了1024+0 的写出
    1073741824字节(1.1 GB)已复制,18.2569 秒,58.8 MB/秒

    二.对交换文件格式化并转换为swap分区

    mkswap /swapfile  
    

    [root@instance-xglfp5i0 etc]# mkswap /swapfile
    正在设置交换空间版本 1,大小 = 1048572 KiB
    无标签,UUID=e0a5c821-0bd2-4a90-984c-4125d20e1173

    三.挂载并激活分区

    1.  swapon /swapfile  
    

    [root@instance-xglfp5i0 etc]# swapon /swapfile
    swapon: /swapfile:不安全的权限 0644,建议使用 0600。

    执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:

    chmod -R 0600 /swapfile 

    四.修改 fstab 配置,设置开机自动挂载该分区:

    1.  vim    /etc/fstab  
    

    在fstab文件末尾追加/swapfile swap swap defaults 0 0

    利用free查看swap分配情况

    [root@instance-xglfp5i0 etc]# free –h
                  total        used        free      shared  buff/cache   available
    Mem:         995548      675548      124184       16968      195816      119248
    Swap:       1048572         776     1047796

    这样缓存分配完成,重新打开mysqld服务systemctl start mysqld.service

    [root@instance-xglfp5i0 course]# systemctl status mysqld.service
    ● mysqld.service - MySQL Community Server
       Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
       Active: active (running) since 五 2019-03-22 11:20:00 CST; 5min ago
     Main PID: 22117 (mysqld_safe)
       CGroup: /system.slice/mysqld.service
               ├─22117 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
               └─22319 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugi...

    3月 22 11:19:58 instance-xglfp5i0 systemd[1]: Starting MySQL Community Server...
    3月 22 11:19:59 instance-xglfp5i0 mysqld_safe[22117]: 190322 11:19:59 mysqld_safe Logging to '/var/log/mysq...g'.
    3月 22 11:19:59 instance-xglfp5i0 mysqld_safe[22117]: 190322 11:19:59 mysqld_safe Starting mysqld daemon wi...sql
    3月 22 11:20:00 instance-xglfp5i0 systemd[1]: Started MySQL Community Server.
    Hint: Some lines were ellipsized, use -l to show in full.
     

    正常运行,接下来进行数据库连接也正常,mysql.sock也正常产生。搞定

  • 相关阅读:
    关于DOS的常用操作
    <leetcode 第188场周赛>
    大挑战!状压dp!
    41. 缺失的第一个正数
    1095. 山脉数组中查找目标值 (二分查找)
    “人活着就是为了贪心”——贪心算法日
    二分查找
    2020.4.25 leetcode 编程战队赛
    <leetcode c++>221. 最大正方形
    <leetcode c++>面试题51. 数组中的逆序对
  • 原文地址:https://www.cnblogs.com/triangle959/p/10662890.html
Copyright © 2011-2022 走看看