mysqli不能使用localhost,请问这是怎么回事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqli不能使用localhost,请问这是怎么回事相关的知识,希望对你有一定的参考价值。

  当主机填写为localhost时mysql会采用 unix domain socket连接,当主机填写为127.0.0.1时MySQL会采用TCP/IP的方式连接。使用Unix socket的连接比TCP/IP的连接更加快速与安全。这是MySQL连接的特性,可以参考官方文档的说明4.2.2. Connecting to the MySQL Server:

  On Unix, MySQL programs treat the host name localhost specially, in a way that is
  likely different from what you expect compared to other network-based programs.
  For connections to localhost, MySQL programs attempt to connect to the local server
  by using a Unix socket file. This occurs even if a --port or -P option is given to
  specify a port number. To ensure that the client makes a TCP/IP connection to the
  local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP
  address or name of the local server. You can also specify the connection protocol
  explicitly, even for localhost, by using the --protocol=TCP option.
  这个问题有以下几种解决方法:

  使用TCP/IP代替Unix socket。即在连接的时候将localhost换成127.0.0.1。
  修改MySQL的配置文件my.cnf,指定mysql.socket的位置:

  /var/lib/mysql/mysql.sock (你的mysql.socket路径)。

  直接在php建立连接的时候指定my.socket的位置(官方文档:mysqli_connect)。比如:

  $db = new MySQLi(\'localhost\', \'root\', \'root\', \'my_db\', \'3306\', \'/var/run/mysqld/mysqld.sock\')
参考技术A 应该是配置出问题或者密码错误了

以上是关于mysqli不能使用localhost,请问这是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

用户“root”的访问被拒绝; @localhost'(使用密码:YES) 和 mysqli_query() 期望参数 1 为 mysqli,bool 给定 [重复]

使用 MySqli 和数组返回多行

PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复]

如何制作mysqli连接功能?

错误事件 7026 下列引导或系统启动驱动程序无法加载: iipgtl3,请问怎麽解决.

警告:mysqli_connect():(HY000/1045):用户'record'@'localhost'的访问被拒绝(使用密码:YES)[重复]