当我尝试使用php mysqli类连接到mysql数据库时,我收到此错误.使用以下代码:
$db = new MySQLi("localhost","kamil","*****");
if (mysqli_connect_errno())
{
echo "An error occured. Please try again later.";
exit();
}
Run Code Online (Sandbox Code Playgroud)
密码为*表示安全性.
我创建了kamil具有外部IP地址和localhost所有权限的用户.当我运行:select user,host from mysql.user它正确显示这两个用户.
我做了一些研究并使用了这个基准:https://stackoverflow.com/a/2183134/1839439来查看它连接的内容.事实证明它是唯一能够连接到127.0.0.1和127.0.0.1:3306其为localhost,但是当我提供localhost它抛出了这个错误.
我的问题是为什么它只允许我使用localhost ip地址而不是名称或外部ip连接到数据库.如果我想在网站上使用mysql或者我可以使用,我是否需要一个不同的主机127.0.0.1?
编辑:
hosts文件
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
Run Code Online (Sandbox Code Playgroud)
| kamil | 109.255.177.28 |
| kamil | localhost |
Run Code Online (Sandbox Code Playgroud) 我试图用以下脚本连接数据库(cxn-test.php)
<?php
$host = '155.30.136.20';//dummy ip
$user = 'abc_user';
$pass = 'xxxxxxxxx';
$dbname = 'welcome';
$link = mysqli_connect($host, $user, $pass,$dbname);
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}else {
echo "success" . PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
当我在尝试终端时
php cxn-test.php //成功
但是,当我尝试localhost时,我收到以下错误,
curl -s http://localhost/cxn-test.php
Error: Unable to connect to MySQL.
Debugging errno: 2002
Debugging error: Permission denied
这是一个奇怪的问题,它不能在localhost上运行,但在命令行上运行良好.