Php SQLSTATE[HY000][1045]对'的访问被拒绝;用户'@';本地主机';(使用密码:是)

Php SQLSTATE[HY000][1045]对'的访问被拒绝;用户'@';本地主机';(使用密码:是),php,mysql,pdo,mariadb,host,Php,Mysql,Pdo,Mariadb,Host,这是我第一次将网页上传到服务器上,但我对这方面的经验非常缺乏。 我下载了xampp以在生产环境中工作,并通过phpmyadmin配置了用户名、密码和主机=“%” 但当我用Filezila上传文件时,我会抛出以下命令: “用户”@“本地主机”(使用)的SQLSTATE[HY000][1045]访问被拒绝 密码:是) 我试图通过Mysql Shell和Workbench连接到我的服务器,以创建一个拥有访问我的数据库的所有权限的用户“user”,但在这两种情况下,我都抛出了以下命令: 不允许主机xxx

这是我第一次将网页上传到服务器上,但我对这方面的经验非常缺乏。 我下载了xampp以在生产环境中工作,并通过phpmyadmin配置了用户名、密码和主机=“%” 但当我用Filezila上传文件时,我会抛出以下命令:

“用户”@“本地主机”(使用)的SQLSTATE[HY000][1045]访问被拒绝 密码:是)

我试图通过Mysql Shell和Workbench连接到我的服务器,以创建一个拥有访问我的数据库的所有权限的用户“user”,但在这两种情况下,我都抛出了以下命令:

不允许主机xxxx.xx.xx连接到此服务器

我不明白的是,为什么要使用MariaDB服务器?我没有下载它或其他东西

我真的不知道如何将权限授予主机内的新用户,使其能够访问我的数据库。我的连接代码如下:

try {   
    $dsn = 'mysql:host=%;dbname=db_name;charset=utf8';
    $db = new PDO($dsn, 'user', 'contraseña');
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
    echo $e->getMessage();
    exit;
}

MariaDB是MySQL的分支,默认情况下,许多托管提供商和linux发行版都有MariaDB。使用MariaDB与MySQL完全相同。请注意,在您的连接字符串中,主机通常是
localhost
而不是
%

1)。对于第一个错误,它表示您的mysql凭据无效。在php代码中更正数据库配置。安排用户名、密码等。。。您可以从主机提供商处获得此信息。尝试将“%”更改为“localhost”

2) 第二次 及


对于第一个问题:如果您的服务器名称是localhost。请验证托管提供商提供的所有信息(服务器名、用户名、数据库密码)。请尝试以下代码:

<?php

$servername = "localhost";
$username = "yourusername";
$password = "yourpassword";

try {
    $conn = new PDO("mysql:host=$servername;dbname=yourdatabase", 
    $username, $password);
   // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
        echo "Connection failed: " . $e->getMessage();
    }
?>


您的mysql是否在同一台服务器上?请尝试将
localhost
更改为
127.0.0.1
谢谢您的回答!我已经在phpmyadmin、控制台(第二个问题已经解决,谢谢!)和php代码中更改了用户名和密码(由我的主机提供商提供),并且我将这两个主机都保留为localhost,但错误仍然存在。@Michael,编辑您的答案,以防止阻塞您答案上的评论回复。
ALTER USER'userName'@'localhost'由'New Password Here'标识帮助,因为我没有设置密码。然后授予特权并刷新。
<?php

$servername = "localhost";
$username = "yourusername";
$password = "yourpassword";

try {
    $conn = new PDO("mysql:host=$servername;dbname=yourdatabase", 
    $username, $password);
   // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
        echo "Connection failed: " . $e->getMessage();
    }
?>