sqlstate[hy000][1045]拒绝用户访问,尽管相同的用户名密码组合可用于mysql\u connect

c6ubokkw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(355)

我正在使用pdo连接mysql数据库。在本地主机上运行时,该代码工作得非常完美。但是,当我将代码传输到web服务器时(当然,我已经相应地更改了用户名和密码),代码不起作用。它给出了以下错误

SQLSTATE[HY000] [1045] Access denied for user 'xxx_xxxxx'@'localhost' (using password: YES)

当我使用旧的不推荐使用的api-mysql\u connect()和相同的用户名密码组合测试连接时,它工作得非常好,所以我知道用户名密码组合是正确的。
这是我的相关代码

try {
    $dsn = "mysql:dbname=company_dbname; host=localhost";
    $user = "company_dbuser";
    $password = "MyPassword";
    $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
    $conn = new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
kg7wmglp

kg7wmglp1#

最终我能解决的问题是我编辑的代码

try {
    $dsn = "mysql:dbname=company_dbname; host=localhost";
    $user = 'company_dbuser';
    $password = 'MyPassword';
    $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
    $conn = new PDO($dsn, $user, $password, $options);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

请检查$user和$password赋值-我不是用双引号而是用单引号赋值。

相关问题