在fedora 12下使用自己从源代码编译的mysql使用,安装过程很麻烦,但好在运行正常。
之前使用windows下mysql/phpmyadmin,到linux下,当然也少不了,整个phpmyadmin,包括配置文件都是从windows下直接拷贝来的,但连接数据库总是出错:
#2002 – 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置)
连接远程数据库,就是虚拟主机数据库服务器却是没有问题的。使用linux终端连接
mysql -h127.0.0.1 -uroot -p
也没有任何问题。
而ping localhost,返回也是正常的,说明linux知道localhost就是本机的。
[root@localhost www]# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.077 ms
^C
— localhost ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2697ms
rtt min/avg/max/mdev = 0.062/0.071/0.077/0.011 ms
感觉很怪异,google一下,有这样的解决方案:
要将 config.inc.php 中
$cfg[‘Servers’][$i][‘host’] = ’localhost’;
改成 $cfg[‘Servers’][$i][‘host’] = ‘127.0.0.1’;
还要添加
$cfg[‘Servers’][$i][‘hide_db’] = ‘information_schema’;//使用登陆后看不见information_schema数据库
于是把配置文件里的host改成127.0.0.1,再连接,好了,连接正常。($cfg[‘Servers’][$i][‘hide_db’] = ‘information_schema’;这一句加不加都无所谓,不影响连接数据库)
为什么在linux下localhost就是不能连接呢?查mysql官方文档[参看这里],看到有这样的句话:
如果未指定指定主机名或指定了特殊的主机名localhost,将使用Unix套接字。
Unix套接字默认为/tmp/mysql.sock,而本机并没有配置这样的套接字文件,所以自然是连接失败了。
官方文档确实非常重要,比网上的一般的解决方法都更权威有效得多。
延伸阅读
- MySQL下limit和join的优化
- MySQL数据库分区Partition基础及应用
- MySQL几个重要日期时间函数/时间戳
- MySQL:日期函数、时间函数总结(MySQL 5.X)
- MySQL错误:Incorrect file format/数据表“使用中”解决手记
- mysql分表
- mysqld 配置优化,请一定要加 skip-name-resolve,否则将被show processlist 里的 unauthenticated user 搞死
- mysql中删除重复记录,只保留一条
- MySQL服务器设置max_user_connections防止连接耗尽,以提高可用性
- MySQL查询及删除重复记录的方法
- phpmyadmin3.x版在windows下的新版本php里日期显示乱码的补丁方案
- phpmyadmin删除“追踪”(就是在表名旁的眼睛图标)/phpmyadmin(v3.3+)追踪功能简介
- phpmyadmin报错原因及解决方法:无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。
- 简单命令对mysql数据库的备份与还原
- phpMyAdmin配置:操作栏只显示“浏览,结构,编辑”等图标不显示文字
0 条评论。