• Can't connect to local MySQL server through socket


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

    这是mysql登录时找不到套接字的问题。

    首先需要明白的是,Linux端的mysql server启动时会开启一个socket,Linux上的MySQL的客户端在不使用IP连接时mysql server时,默认也会通过套接字来链接mysql server。

    1.mysql server的套接字文件。

    如果不手动配置my.cnf,那么默认的socket一般是DATADIR/mysql.sock,而DATADIR如果没有手动修改,一般默认是/var/lib/mysql目录。不同的mysql版本,可能socket的默认路径是/tmp/mysql.sock。

    例如我将socket路径修改为/data/mysql.sock

    2.客户端连接时使用的套接字文件。

    在Linux上的各种mysql类客户端(例如mysql,mysqladmin,mysqldump,mysqlimport等)连接mysql server时,如果指定的主机名是'localhost',则会使用套接字来连接mysql server。因此,必须为这些客户端指定正确的套接字。

    方法一:在连接命令行上使用"-S"选项指定

    mysqladmin -S /data/mysql.sock
    mysql -S /data/mysql.sock
    mysqldump -S /data/mysql.sock
    

    方法二:在配置文件中指定
    例如在my.cnf中:

    [client]
    socket=/data/mysql.sock
    

    client段的配置表示任何客户端连接mysql server时都使用该段配置。因此,这样配置后,无论是mysql、mysqldump、mysqladmin还是其他的客户端都会使用socket=/data/mysql.sock进行连接。

    除了使用[client]指定全局客户端的连接参数,还可以为特定的客户端指定连接参数。例如下面为mysql、mysqldump、mysqladmin这3个客户端分别指定socket连接参数。

    [mysql]
    socket=/data/mysql.sock
    
    [mysqldump]
    socket=/data/mysql.sock
    
    [mysqladmin]
    socket=/data/mysql.sock
    

    注意:如果使用IP,例如mysql -uroot -h'192.168.100.10'则表示使用TCP/IP协议连接mysql,这时不会使用套接字,就没有套接字找不到的问题。

  • 相关阅读:
    HDU 1850 Being a Good Boy in Spring Festival
    UESTC 1080 空心矩阵
    HDU 2491 Priest John's Busiest Day
    UVALive 6181
    ZOJ 2674 Strange Limit
    UVA 12532 Interval Product
    UESTC 1237 质因子分解
    UESTC 1014 Shot
    xe5 android listbox的 TMetropolisUIListBoxItem
    xe5 android tts(Text To Speech)
  • 原文地址:https://www.cnblogs.com/f-ck-need-u/p/9098664.html
Copyright © 2020-2023  润新知