QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1565|回复: 8

连接MySQL的一个问题

[复制链接]
发表于 2005-1-7 14:08:49 | 显示全部楼层 |阅读模式
[code:1]$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:32  mysqld ended


[1]+  Done                    mysqld_safe --user=bibby
$
[/code:1]
MySQL成功启动后,运行这个命令:
[code:1]mysql -p -u root
[/code:1]
输入密码后就显示了这个错误:
[code:1]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)[/code:1]
请问这个是怎么回事呢?
该如何解决?
谢谢回复。
发表于 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文件来修正它,打开文件,可以看到如下的东东:

[mysqld]
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

还有:

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';
回复

使用道具 举报

 楼主| 发表于 2005-1-7 18:43:10 | 显示全部楼层
谢谢涩兔子 :-)
小弟刚开始学apache+php+mysql,还请多多指教 :-)
回复

使用道具 举报

 楼主| 发表于 2005-1-7 21:36:33 | 显示全部楼层
涩兔子, 你说的那些文件我都找不道耶,怎么回事呢?
比如:
[code:1]/var/lib/mysql/mysql.sock
/etc/my.cnf
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-1-7 23:08:12 | 显示全部楼层
重新编译了一次mysql,加上这个选项后好象就没有问题了:
[code:1]
--with-unix-socket-path=/tmp/mysql.sock
[/code:1]
回复

使用道具 举报

发表于 2005-1-8 13:16:40 | 显示全部楼层
[quote:6135b532bc="VimChina"]涩兔子, 你说的那些文件我都找不道耶,怎么回事呢?
比如:
[code:1]/var/lib/mysql/mysql.sock
/etc/my.cnf
[/code:1][/quote]

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

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

使用道具 举报

 楼主| 发表于 2005-1-8 13:38:20 | 显示全部楼层
我使用了这个参数 :
--prefix=/www/mysql
回复

使用道具 举报

发表于 2005-1-8 14:08:24 | 显示全部楼层
那就默认configure目录到/www/mysql下了
回复

使用道具 举报

 楼主| 发表于 2005-1-8 14:36:38 | 显示全部楼层
我的apache-2.0.52、PHP-5.0.3、MySQL-4.1.7都安装在/www下各自的目录里了,呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 17:51 , Processed in 0.096604 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表