关闭

问题:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

670人阅读 评论(0) 收藏 举报
分类:

今天连接mysql数据库的时候遇到一个问题:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

 

参考网上相关的方法,包括:(http://blog.csdn.net/lmss82/archive/2009/08/05/4414178.aspx

方案1.
 1.#ps -A|grep mysql
   显示类似:
  1829         00:00:00 mysqld_safe
  1876        00:00:31 mysqld
  2.#kill -9 1829
  3.#kill -9 1876
  4.#/etc/init.d/mysql restart
  5.#mysql -u root -p
 
   他的麻烦解决了,我的还没解决!
 
继续找
方案2
先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已经启动.
另外看看是不是权限问题.
------------------------------------------------------------------------------------
[root@localhost beinan]#chown -R mysql:mysql /var/lib/mysql
[root@localhost beinan]# /etc/init.d/mysqld start
启动 MySQL: [ 确定 ]
[root@localhost lib]# mysqladmin -uroot password '123456'
[root@localhost lib]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 3 to server version: 4.1.11

Type 'help;' or '/h' for help. Type '/c' to clear the buffe
 
他的也解决了,我的麻烦还在继续,依然继续寻找
 
方案3
问题解决了,竟然是max_connections=1000 他说太多了,然后改成500也说多,无奈删之问题解决了。
 
还是不行
方案4
   
     /var/lib/mysql 所有文件权限 改成mysql.mysql
    
     不行不行
 
方案5
     摘要:解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 '/tmp/mysql .sock'连到服务器,而php标准配置正是用过'/tmp/mysql .sock',但是一些mysql 安装方法 将 mysql .sock放在/var/lib/mysql .sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东:
   [mysql d]
  socket=/var/lib/mysql .sock
  改一下就好了,但也会引起其他的问题,如mysql 程序连不上了,再加一点:
  [mysql ]
  socket=/tmp/mysql .sock
  或者还可以通过修改php.ini中的配置来使php用其他的mysql .sock来连,这个大家自己去找找
  
  或者用这样的方法:
  ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

成功了,就是这样ln -s /var/lib/mysql /mysql .sock /tmp/mysql .sock

OK!

 

但我的系统中没有找到mysql.sock文件,只有mysqld.sock文件,/var/run/mysqld/mysqld.sock

于是仿照上面的做法: ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

这样,可以正常连接数据库了

 

再附一篇相关文章:(http://blog.chinaunix.net/u1/43706/showart_351145.html

 mysql_real_connect()试图建立到运行host的一个MySQL数据库引擎的一个连接。其函数原形为:

   MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)   

   我要编一段程序用来远程连接一个mysql数据库。我在数据库的本机上做试验,发现mysql_real_connect()的第二个参数设为"localhost"时可以正常连接,当改写为该机器的IP地址"192.168.100.2"时就连接失败。我在程序中写的原句为:
mysql_real_connect(mysql,"192.168.100.2","root","","mydns",0,NULL,0)。
 
   最初,我以为将"localhost"改为"192.168.100.2"之后要将第六个参数端口号写上,但还是不行。由于我是在Linux上做的,所以想也许需要将第七个参数unix_socket写上,结果还是不行。于是到google找解决方法,发现要远程连接mysql需要为mysql的指定帐号设置远程连接的权限。在我的程序中,就要为root设置这一权限。事实证明,我之前连接失败正是由于这个原因导致的。但问题是,网上被广泛转贴的方法是错误的,我照做后还不行,最后问了同学才解决的。下面我具体说一下,望大家不会再被误导。
 
   在mysql数据库中有一个mysql库,它里面包含一个user表,里面存有所有帐号及它们的权限及特征。对应我的user表中找到User项为root的,发现有两项,其Host项分别为localhost和localhost.localdomain。我们只需要把'localhost'改为'%'就可以让所有远程机器以root帐号登陆mysql服务器。也可以将'localhost'改为某一个ip地址,这样就可以在该地址的机器上登陆mysql服务器。这些都没有问题,只是网上被广为传颂的一个更改Host项的方法是错误的。他的方法是用update语句将指定User项的Host项改过来,如果想添加一个新的用于远程访问的帐号,就用insert语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:
     grant all privileges on mydns.* to 'root'@'%'
来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能操作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
 
   为了解决这个问题用了一下午的时间,费了不少周折,写出来也能让大家少走些弯路。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Django+MySQL安装配置详解(Linux)[更新为1.8.2版]

转自:http://dmyz.org/archives/110 Django是一个开源的Web应用框架,由Python写成,并于2005年7月在BSD许可证下发布。Django的主要目标是使得开发复...
  • qinglu000
  • qinglu000
  • 2015-06-25 17:32
  • 1820

Ubuntu下彻底卸载mysql、安装mysql、及MySQLdb模块

做个记录: 1、删除 mysql 1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-s...
  • my2010Sam
  • my2010Sam
  • 2014-01-23 13:49
  • 9904

zabbix3.0.2 使用percona的mysql插件的遇到的诡异问题解决记录

-->前言在使用percona zabbix mysql模版插件的过程中,碰到的一些问题记录在此,后续如果再碰到的话,也一起记录下来,好记星不如烂笔头,这是真理啊~1,报错记录ERROR: Can't...
  • mchdba
  • mchdba
  • 2016-05-18 21:31
  • 9825

关于Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的问题

找不到mysql socket的问题,我最近碰到了好多次 重装系统以前,我的mysql,apache,php都是自己编译安装的,当时并没有碰到这些问题, 重装系统以后,我的mysql是通过yum安...
  • QQ635785620
  • QQ635785620
  • 2012-09-20 17:20
  • 1089

遇到问题----Can't connect to local MySQL server through socket '/tmp/mysql.sock'

Can't connect to local MySQL server through socket '/tmp/mysql.sock' 提示得很清楚 就是连接的时候要/tmp路径下找一个mysq...
  • q383965374
  • q383965374
  • 2013-11-05 11:32
  • 25190

Mysql连接错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (

1.首先查看  /tmp 目录下有没有 mysql.sock              在终端上;prompt> ls /tmp | grep mysql.soc...
  • wzb56
  • wzb56
  • 2011-03-31 21:03
  • 5583

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

今天在ubuntu上连接mysql数据库时,遇到一个小问题  Can't connect to local MySQL server through socket '/var/run/mysqld/m...
  • CSDNones
  • CSDNones
  • 2015-03-07 13:20
  • 924

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

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)   有时候,当我们使...
  • xybclndcn
  • xybclndcn
  • 2017-05-17 11:05
  • 244

记一次 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock’(2) 排错流程

在linux与unix系统的socket文件是为了建立两个程序之间的连接使用的 , 而在mysql中,当mysql启动成功时,会根据配置文件中设定的路径(如:tmp/mysql.sock),在tmp中...
  • yun__yang
  • yun__yang
  • 2017-01-16 12:01
  • 21318

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

本文摘自:http://blog.csdn.net/lmss82/article/details/4414178 输入 #mysql -u root -p   ERROR 2002 (HY00...
  • r77683962
  • r77683962
  • 2012-02-05 18:56
  • 767
    个人资料
    • 访问:1892674次
    • 积分:23521
    • 等级:
    • 排名:第338名
    • 原创:875篇
    • 转载:28篇
    • 译文:18篇
    • 评论:373条