SQLSTATE[HY000] [1045] 'user'@'localhost' 访问被拒绝(使用密码:YES)

问题描述 投票:0回答:4

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

SQLSTATE [HY000] [1045] 'user'@'localhost' 的访问被拒绝(使用 密码:是)

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

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

我不明白的是为什么是 MariaDB Server?我没有下载它或其他东西。

我真的不知道如何向主机内的新用户授予权限,以便它可以访问我的数据库。我的连接代码如下:

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;
}
php mysql pdo mariadb host
4个回答
2
投票

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

2)对于第二个 主机'xxx.xx.xxx.xxx'不允许连接到此MySQL服务器

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

1
投票

对于第一个问题:如果你的服务器名称是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();
    }
?>

0
投票

MariaDB 是 MySQL 的一个分支,许多托管提供商和 Linux 发行版默认都有 MariaDB。使用 MariaDB 与 MySQL 非常相似。请注意,在连接字符串中,主机通常是

localhost
而不是
%


0
投票

在我的例子中,我将环境变量命名为数据库用户的 USER,默认情况下选择操作系统用户名,因此我将数据库用户重命名为 MYSQL_USER,只是与 USER 的名称不同。然后我可以使用 process.env.MYSQL_USER 访问它。 如果我尝试最初使用 process.env.USER 访问它,它会选择我的操作系统用户名而不是设置的 mysql 数据库用户名。

我希望这也能帮助别人!

© www.soinside.com 2019 - 2024. All rights reserved.