$db = new MySQLi("localhost","kamil","*****");
if (mysqli_connect_errno())
{
echo "An error occured. Please try again later.";
exit();
}
密码为*用于安全。
我已经创建了外部ip地址和localhost的所有权限的用户kamil。当我运行:选择用户,主机从mysql.user它正确显示这两个用户。
我做了一些研究,并使用这个基准:https://stackoverflow.com/a/2183134/1839439来看看它连接到什么。事实证明,它只能连接到127.0.0.1和127.0.0.1:3306这是localhost,但是当我提供本地主机它会抛出这个错误。
我的问题是为什么只允许我使用localhost ip地址连接到数据库,而不是名称或外部ip。如果我想要在网站上使用mysql或者可以使用127.0.0.1,我需要一个不同的主机?
编辑:
主机文件
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 raspberrypi
该用户的Mysql用户表结果:
| kamil | 109.255.177.28 |
| kamil | localhost |
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套接字。您将在连接时使用127.0.0.1而不是本地主机执行此操作。尽管如此,Unix套接字可能会更快更安全。
>您可以更改php.ini
中的套接字:打开MySQL配置文件my.cnf以找到MySQL创建套接字的位置,并将PHP的mysqli.default_socket设置为该路径。在我的系统上,它是/var/run/mysqld/mysqld.sock。
>打开连接时,直接在PHP脚本中配置套接字。例如:
$db = new MySQLi('localhost', 'kamil', '***', '', 0,
'/var/run/mysqld/mysqld.sock')
相关文章
- 错误2002(HY000):无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)
- ERROR 2002(HY000):无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器
- 对于新手:ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器'/tmp/mysql.sock'
- 无法在OSX 10.6开发机器上运行mysql:“ERROR 2002(HY000):无法通过套接字连接到本地MySQL服务器'/tmp/mysql.sock'(2)”
- laravel-5 - PDOException:SQLSTATE [HY000] [2002]无法通过套接字连接到本地MySQL服务器
- Mac终端ERROR 2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)
- ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器
- MAMP - phpMyAdmin#2002 - 无法通过套接字'/Applications/MAMP/tmp/mysql/mysql.sock'连接到本地MySQL服务器
转载注明原文:php – mysqli :: mysqli():( HY000/2002):无法通过套接字’MySQL’连接到本地MySQL服务器(2) - 代码日志