问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常。MySQL的权限设置正确,且通过mysql命令行客户端可以正常连接数据库。

分析:这是典型的socket没有正确设置的情况。

连接MySQL数据库有两种方式:TCP/IP(一般理解的端口的那种)和Unix套接字(一般叫socket或者sock)。大部分情况下,可以用localhost代表本机127.0.0.1,但是在MySQL连接时,二者不可混用,而且MySQL中权限设置中localhost与127.0.0.1也是分开设置的。当设置为127.0.0.1时,系统通过TCP/IP方式连接数据库;当设置为localhost时,系统通过socket方式连接数据库。

解决:首先要看本机MySQL的socket套接字文件在哪里,查看命令是:

mysqld --verbose --help | grep socket
socket      /var/run/mysqld/mysqld.sock

找到这一项:

mysql.default_socket =
mysql.default_socket = /var/run/mysqld/mysqld.sock

更多相关文章

  1. Android获取设备唯一标识完美解决方案
  2. android加密解密完美教程
  3. Android(安卓)多层树完美实现
  4. Android(安卓)调用系统的分享[完美实现同时分享图片和文字]
  5. Android(安卓)沉浸式状态栏完美解决方案
  6. Android(安卓)倒计时功能,完美解决系统时间更改后,倒计时不准问题
  7. 完美解决android Studio打开报错 https://code.google.com/p/and
  8. Android中ScrollView中嵌套RecyclerView的完美解决办法
  9. Android(安卓)自定义AlignTextView 完美解决原生TextView诸多问

随机推荐

  1. 如果至少有一条记录的值为1,则返回“是”
  2. 如何将这两个查询组合成1?
  3. 如何在一个查询中组合六个独立查询。表是
  4. mysql主从简单配置
  5. 从SQL字符串分割多桩分隔符
  6. 【转载】怎样把Oracle的数据导入到SQLSer
  7. sql2000在还原备份时,我发现我新的备份,
  8. mysql 压缩解压版 zip 安装 详细步骤 教
  9. mysql无法登陆修复
  10. SQL主键的外键问题