解决方案 »

  1.   

    我把my.cnf里面的
    【client】 和 【mysqld】
    分别修改为:
    socket = /var/run/mysqld/mysql.sock依然显示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
      

  2.   

    既然用 mysql -u root -p 连接不上去,那我就尝试用:
    mysql -h 127.0.0.1
    成功了,如下:Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2
    Server version: 5.5.39 MySQL Community Server (GPL)
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trade of Oracle Corporation and/or its
    affiliates. Other names may be trades of their respective
    owners.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | test               |
    +--------------------+
    2 rows in set (0.07 sec)

    但是有个问题: 
    一般最开始登陆进入mysql后,都会默认有 4 个数据库,分别是:
    information_schema
    mysql
    performation_schema
    test但是我用 mysql -h 127.0.0.1 登陆进去后发现,只有上面的 2 个数据库:
    information_schema |
    | test       这是为什么啦?到底是怎么回事? 谁能帮忙解答下?
      

  3.   

    mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。
    你看看MySQL的错误日志里有没有什么异常信息,MySQL真的正常启动了吗?
      

  4.   


    错误日志内容如下:
    141028 16:09:46 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 16:09:46 [Note] Event Scheduler: Purging the queue. 0 events
    141028 16:09:46  InnoDB: Starting shutdown...
    141028 16:09:47  InnoDB: Shutdown completed; log sequence number 1595675
    141028 16:09:47 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 16:09:47 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
    tualBox.pid ended
    141028 16:13:08 mysqld_safe Starting mysqld daemon with databases from /usr/loca
    l/mysql/data
    141028 16:13:08 [Note] Plugin 'FEDERATED' is disabled.
    141028 16:13:08 InnoDB: The InnoDB memory heap is disabled
    141028 16:13:08 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
    141028 16:13:08 InnoDB: Compressed tables use zlib 1.2.3
    141028 16:13:08 InnoDB: Using Linux native AIO
    141028 16:13:08 InnoDB: Initializing buffer pool, size = 128.0M
    141028 16:13:08 InnoDB: Completed initialization of buffer pool
    141028 16:13:09 InnoDB: highest supported file format is Barracuda.
    141028 16:13:09  InnoDB: Waiting for the background threads to start
    141028 16:13:10 InnoDB: 5.5.39 started; log sequence number 1595675
    141028 16:13:10 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 0  MySQL Community Server (G
    PL)
    141028 16:32:28 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 16:32:28  InnoDB: Starting shutdown...
    141028 16:32:29  InnoDB: Shutdown completed; log sequence number 1595675
    141028 16:32:29 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 16:32:29 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
    tualBox.pid ended
    141028 16:33:00 mysqld_safe Starting mysqld daemon with databases from /usr/loca
    l/mysql/data
    141028 16:33:01 [Note] Plugin 'FEDERATED' is disabled.
    141028 16:33:01 InnoDB: The InnoDB memory heap is disabled
    141028 16:33:01 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
    141028 16:33:01 InnoDB: Compressed tables use zlib 1.2.3
    141028 16:33:01 InnoDB: Using Linux native AIO
    141028 16:33:01 InnoDB: Initializing buffer pool, size = 128.0M
    141028 16:33:02 InnoDB: Completed initialization of buffer pool
    141028 16:33:02 InnoDB: highest supported file format is Barracuda.
    141028 16:33:02  InnoDB: Waiting for the background threads to start
    141028 16:33:03 InnoDB: 5.5.39 started; log sequence number 1595675
    141028 16:33:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    141028 16:33:03 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    141028 16:33:03 [Note] Server socket created on IP: '0.0.0.0'.
    141028 16:33:03 [Note] Event Scheduler: Loaded 0 events
    141028 16:33:03 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
     (GPL)
    141028 17:06:23 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown141028 17:06:23 [Note] Event Scheduler: Purging the queue. 0 events
    141028 17:06:23  InnoDB: Starting shutdown...
    141028 17:06:24  InnoDB: Shutdown completed; log sequence number 1595675
    141028 17:06:24 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete141028 17:06:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/gaoyu-Vir
    tualBox.pid ended
    141028 17:06:54 mysqld_safe Starting mysqld daemon with databases from /usr/loca
    l/mysql/data
    141028 17:06:55 [Note] Plugin 'FEDERATED' is disabled.
    141028 17:06:55 InnoDB: The InnoDB memory heap is disabled
    141028 17:06:55 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
    141028 17:06:55 InnoDB: Compressed tables use zlib 1.2.3
    141028 17:06:55 InnoDB: Using Linux native AIO
    141028 17:06:55 InnoDB: Initializing buffer pool, size = 128.0M
    141028 17:06:55 InnoDB: Completed initialization of buffer pool
    141028 17:06:55 InnoDB: highest supported file format is Barracuda.
    141028 17:06:56  InnoDB: Waiting for the background threads to start
    141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
    141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
    141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
    141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server
     (GPL)
    root@gaoyu-VirtualBox:~# tail /usr/local/mysql/data/gaoyu-VirtualBox.err
    141028 17:06:55 InnoDB: Completed initialization of buffer pool
    141028 17:06:55 InnoDB: highest supported file format is Barracuda.
    141028 17:06:56  InnoDB: Waiting for the background threads to start
    141028 17:06:57 InnoDB: 5.5.39 started; log sequence number 1595675
    141028 17:06:57 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    141028 17:06:57 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    141028 17:06:57 [Note] Server socket created on IP: '0.0.0.0'.
    141028 17:06:57 [Note] Event Scheduler: Loaded 0 events
    141028 17:06:57 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
    Version: '5.5.39'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)没有任何异常信息。
    我发现 用 127.0.0.1 能正常登陆,但是用 root 或者其他用户都无法登陆并且提示错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
      

  5.   

    1. 第一个问题你可以修改你MYSQLD 的socket默认路径
    2. 权限问题,[email protected]没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
      

  6.   


    1. 第一个问题你可以修改你MYSQLD 的socket默认路径
    回复:我修改过了,还是提示原来同样的错误2. 权限问题,[email protected]没有管理权限,通过root@localhost登录给这个账号grant需要的权限就可以了
    回复:现在的问题是这样的:
    我采用如下方法(重新创建mysqld.sock)解决了,可以正常登陆。
    root@*****-VirtualBox:~# mkdir /var/run/mysqld
    root@*****-VirtualBox:~# ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock
    root@*****-VirtualBox:~# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.                 
    ......
    ......
    .......mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+                                    ---->4 个默认的数据库
    当我用 127.0.0.1 登陆查看数据库,竟然只有 2 个数据库了,这是为什么?
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | test               |
    +--------------------+请教,为什么用localhost登陆会显示 4个完整的数据库,而用 127.0.0.1登陆时,只显示 2 个数据库?而且这种方法治标不治本,当我重启系统后mysqld.sock就消失了。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
      

  7.   

    我想是不是 有多个mysql实例?
      

  8.   

    localhost和127.0.0.1似乎被MySQL认为是两个不同的访问地址,你要看一下你账户的访问权限:
    用localhost登录,先看看都有那些用户可以从什么地址访问
    SELECT `user`, `host` FROM `mysql`.`user`;
    然后再看看访问权限,比如
    SHOW GRANTS FOR 'root'@'localhost';
    既然localhost可以看到四张表,那么说明数据库数据没有问题,剩下的原因应该就是权限不同导致看到的表不同
      

  9.   


    其实,我在 6  楼的方法(重新创建mysqld.sock),这种方法治标不治本,当我重启系统后mysqld.sock就消失了,我又需要重新建立mysql.sock 。为什么用localhost登陆总是提示:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
      

  10.   

    现在问题有2个:
    问题1:  error里面的信息提示是:mysqld.sock,但是我在系统中找到的是 mysql.sock,请问这两个是同样一个文件吗?
    问题2:  在my.cnf里面 的 socket = /tmp/mysql.sock,跟error里面的目录/var/run/mysqld/ 不一样,是不是这个原因导致的?终于看到关键信息了
    其实你自己已经找到文件原因了
    mysql需要通过sock文件来连接服务器,你mysqld字段的sock文件和client段的文件名不一样
    所以mysql认为是其他实例的sock文件,自然就去默认路径去寻找了,默认路径就是 /var/run/mysqld/mysql.sock
    LZ你这是误导大伙,把两个修改一样就可以了
      

  11.   


    没有误导大家,你都没有看到 我的 my.cnf文件内容,如何知道mysqld字段的sock文件和client段的文件名不一样!!!下面是my.cnf文件 部分内容:
      

  12.   

    你这样配置还有问题吗?
    如果有你确定你MYSQL用的是这个配置文件
      

  13.   


    我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
    但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
      

  14.   


    我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
    但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
    这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。
      

  15.   


    我已经用  mysql -u root -p -S /tmp/mysql.sock 解决了。
    但是,能不能不加后缀“mysql.sock” 就能正常登陆,即采用 mysql -u root -p 就能登陆进去?
    这种方式也可以,但是你启动mysql的时候加上sock参数而且sock参数的目录要与my.cnf里面的mysql.sock路径保值一致。我用 mysql -u root -p  无法登陆,因为会一直报错:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
      

  16.   

    确实比较奇怪
    难道是对'/var/run/mysqld文件夹没有权限?
      

  17.   

    事实上,根本就没有文件夹 mysqld
    每次我建立文件夹 mysqld,重启系统后这个文件夹mysqld就会消失。