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 给定 [重复]
PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复]
错误事件 7026 下列引导或系统启动驱动程序无法加载: iipgtl3,请问怎麽解决.
警告:mysqli_connect():(HY000/1045):用户'record'@'localhost'的访问被拒绝(使用密码:YES)[重复]