今天连接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语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:
来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能操作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
为了解决这个问题用了一下午的时间,费了不少周折,写出来也能让大家少走些弯路。
------------------------------------------------------------------------------------------------------------------------------------------
启动MYSQL是出现以下错误:
[root@www ~]# /usr/local/webserver/mysql/bin/mysqladmin -u root -p 12345678
Enter password:
/usr/local/webserver/mysql/bin/mysqladmin: connect to server at ‘localhost’ failed
error: ‘Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111)’
Check that mysqld is running and that the socket: ‘/tmp/mysql.sock’ exists!
解决方法:
[root@www ~]# /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.38-log Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
mysql的参数说明:
/usr/local/webserver/mysql/bin/mysql –help | less
列举常用参数:
-u, –user=name User for login if not current user.
-p, –password[=name]
Password to use when connecting to server. If password is
not given it’s asked from the tty.
-S, –socket=name Socket file to use for connection.
it’s ok !
今天连接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语句添加。事实是这根本不行,我按照作了,表是变了,但还是连不上。后来经过询问才知道,要想改,结合我的情况,必须用下面的这条语句:
来改变root帐号的权限。如果添加新帐号也是如此。想必这个表比较特殊,用普通的SQL语句不能操作。如果帐号有密码,后面再加上identified by '***'(*为你帐号的密码)就可以了。
为了解决这个问题用了一下午的时间,费了不少周折,写出来也能让大家少走些弯路。
------------------------------------------------------------------------------------------------------------------------------------------
启动MYSQL是出现以下错误:
[root@www ~]# /usr/local/webserver/mysql/bin/mysqladmin -u root -p 12345678
Enter password:
/usr/local/webserver/mysql/bin/mysqladmin: connect to server at ‘localhost’ failed
error: ‘Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111)’
Check that mysqld is running and that the socket: ‘/tmp/mysql.sock’ exists!
解决方法:
[root@www ~]# /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.38-log Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
mysql的参数说明:
/usr/local/webserver/mysql/bin/mysql –help | less
列举常用参数:
-u, –user=name User for login if not current user.
-p, –password[=name]
Password to use when connecting to server. If password is
not given it’s asked from the tty.
-S, –socket=name Socket file to use for connection.
it’s ok !
分享到:
相关推荐
ERROR 2002: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (111) 解决办法: /usr/local/mysql/bin/mysqladmin -u root > -S /var/lib/mysql/mysql.sock password 'your.passwd' ...
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) 出现问题原因: 有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socket ...
今天小编就为大家分享一篇关于Can't connect to local MySQL through socket '/tmp/mysql.sock'解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
mysql 支持 socket 和 TCP/IP 连接。那么 mysql.sock 这个文件有什么用呢?本文给大家介绍的非常详细,需要的朋友参考下吧
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) 的异常。是用dmg直接安装的以为安装包又出现了奇奇怪怪的错误,正欲卸载该版本时找到了我的问题的关键。 解决...
在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can’t connect to local MySQL server through socket,即无法通过socket连接到mysql服务器,同时...
?php $link=mysql_connect(‘localhost’,’root’,... 运行后报错 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ 但在 命令行中能进入mysql [root@localhost local]# mysql -u root -p E
最近在linux上装Aphace... can't connect to local MySQL server through socket 'var/run/mysqld/mysqld.sock' 这个把我弄得几近崩溃,我在网上查找了很多的解决办法,大概有几种解决方案: 1.权限问题 2.修改/
php 不能连接数据库 php error Can't connect to local MySQL server through socket '/tmp/mysql.sock'
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111) 解决办法: [root@test mysql]# /usr/local/mysql/bin/mysqladmin -u root / > -S /var/lib/mysql/mysql.sock ...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 如果说出现这个一般就是因为MySQL没有起来 [root@localhost ~]# mysql -uroot -p ERROR 1045 (28000):...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2) 2、故障分析 查看mysql实例的状态 [root@localhost scripts]# netstat -ntlp | grep 3306 tcp 0 0 :
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) 分析:使用mysql –verbose –help进行分析,才发现原来port和socket对应的值都为0或者为空,也就是默认参数都...