VimChina 发表于 2005-1-7 14:08:49

连接MySQL的一个问题

$mysqld_safe --user=bibby&
[1] 17353
$ Starting mysqld daemon with databases from /www/mysql/var
STOPPING server from pid file /www/mysql/var/Magic.pid
050108 14:02:32mysqld ended


[1]+Done                  mysqld_safe --user=bibby
$

MySQL成功启动后,运行这个命令:
mysql -p -u root

输入密码后就显示了这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
请问这个是怎么回事呢?
该如何解决?
谢谢回复。 :)

涩兔子 发表于 2005-1-7 18:20:05

解决不能通过mysql.sock连接MySQL问题的办法

主要错误是ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock'(111)2002 这类的错误

首先,我们要确定mysql.sock有足够的权限。
这个问题主要提示是,不能通过'/tmp/mysql.sock'连到服务器,而php标准配置正是用过'/tmp/mysql.sock',但是一些mysql安装方法将mysql.sock放在/var/lib/mysql.sock或者其他的什么地方,你可以通过修改/etc/my.cnf文件来修正它,打开文件,可以看到如下的东东:


socket=/var/lib/mysql.sock

改一下就好了,但也会引起其他的问题,如mysql程序连不上了,再加一点:


socket=/tmp/mysql.sock

或者还可以通过修改php.ini中的配置来使php用其他的mysql.sock来连,这个大家自己去找找。

或者用这样的方法:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

还有:

phpmyadmin的说明书有说

The error message "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)..." is displayed. What can I do?

For RedHat users, Harald Legner suggests this on the mailing list:

On my RedHat-Box the socket of mysql is /var/lib/mysql/mysql.sock. In your php.ini you will find a line
mysql.default_socket = /tmp/mysql.sock
change it to
mysql.default_socket = /var/lib/mysql/mysql.sock
Then restart apache and it will work.

Here is a fix suggested by Brad Ummer in the phpwizard forum:

First, you need to determine what socket is being used by MySQL.
To do this, telnet to your server and go to the MySQL bin directory. In this directory there should be a file named mysqladmin.

Type ./mysqladmin variables, and this should give you a bunch of info about your MySQL server, including the socket (/tmp/mysql.sock, for example).

Then, you need to tell PHP to use this socket.

Assuming you are using PHP 3.0.10 or better, you can specify the socket to use when you open the connection. To do this in phpMyAdmin, you need to complete the socket information in the config.inc.php3.

For example: $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

VimChina 发表于 2005-1-7 18:43:10

谢谢涩兔子 :-)
小弟刚开始学apache+php+mysql,还请多多指教 :-)

VimChina 发表于 2005-1-7 21:36:33

涩兔子, 你说的那些文件我都找不道耶,怎么回事呢?
比如:
/var/lib/mysql/mysql.sock
/etc/my.cnf

VimChina 发表于 2005-1-7 23:08:12

重新编译了一次mysql,加上这个选项后好象就没有问题了:

--with-unix-socket-path=/tmp/mysql.sock

涩兔子 发表于 2005-1-8 13:16:40

涩兔子, 你说的那些文件我都找不道耶,怎么回事呢?
比如:
/var/lib/mysql/mysql.sock
/etc/my.cnf


一般的,如果用Linux的安装光盘install MySQL的话,就会被默认安装到/var目录下

如果你和兔兔一样安装的是MySQL的source package并按照MySQl的官方install文档安装,就会安装到/usr/local/mysql下

VimChina 发表于 2005-1-8 13:38:20

我使用了这个参数 :
--prefix=/www/mysql

涩兔子 发表于 2005-1-8 14:08:24

那就默认configure目录到/www/mysql下了 :idea:

VimChina 发表于 2005-1-8 14:36:38

我的apache-2.0.52、PHP-5.0.3、MySQL-4.1.7都安装在/www下各自的目录里了,呵呵
页: [1]
查看完整版本: 连接MySQL的一个问题