【问题标题】:SQLSTATE[HY000] [1045] Access denied for 'root'@'localhost' on lumen api [duplicate]SQLSTATE [HY000] [1045] 流明 api 上的“root”@“localhost”访问被拒绝 [重复]
【发布时间】:2026-01-15 19:35:01
【问题描述】:

我正在 ubuntu 18.04 上安装带有 tasksel 的灯。我已经按照中的说明进行了配置 https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-18-04

在 .env 文件和 config/database.php 文件中更改数据库详细信息后,在浏览器中访问应用程序。

创建了一个数据库“mydb”

创建了一个用户“myusername”/“mypwd”并将所有权限授予该用户和数据库。 例如-->

CREATE USER 'myusername'@'localhost' IDENTIFIED BY 'mypwd';
GRANT ALL PRIVILEGES ON * . * TO 'myusername'@'localhost';
FLUSH PRIVILEGES;

lumen .env 中的配置

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=myusername
DB_PASSWORD=mypwd

配置/数据库.php

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'mydb'),
'username' => env('DB_USERNAME', 'myusername'),
'password' => env('DB_PASSWORD', 'mypwd'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]

在终端运行 'path/project_folder/' php artisan cache:clear

日志:

[2017-01-23 09:34:24] local.ERROR: 异常 'PDOException' 带有消息 >'SQLSTATE[HY000] [1045] 用户'myusername'@'localhost'的访问被拒绝 (使用密码:YES)'在 Illuminate\Database\Connectors\Connector.php:119

注意:验证 PDO 是否在我的机器上工作 用testdb.php测试了mysql连接:

$servername = "localhost";
$dbname = "testdb";
$username = "root";
$password = "secret";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "
mysqli Connected successfully 
";
// working correct

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
die("

mysqli_connect Connection failed: " . mysqli_connect_error());
}
echo "
mysqli_connect Connected successfully
";

// working correct
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "
MySQL PDO Connected successfully
";
}
catch(PDOException $e)
{
echo "

MySQL PDO Connection failed: " . $e->getMessage();
}
?>

输出是

mysqli连接成功

mysqli_connect 连接成功

MySQL PDO Connection failed: SQLSTATE[HY000] [1045] Access denied for >user 'root'@'localhost' (using password: YES)

我本地机器上的 PDO 不工作。 mysql pdo 的扩展是活动的。多次重启 Lamp 服务器。但它仍然无法正常工作。有人可以帮忙吗?

【问题讨论】:

    标签: mysql apache pdo lumen ubuntu-18.04


    【解决方案1】:

    MySQL PDO 连接失败:SQLSTATE[HY000] [1045] >user 'root'@'localhost' 的访问被拒绝(使用密码:YES)

    这并不意味着 PDO 不工作,它正在工作。您的用户“root”登录失败。密码可能不正确,也可能是其他问题。 (如宿主)

    您可以尝试以下方法吗?

    CREATE USER 'myusername'@'%' IDENTIFIED BY 'mypwd'; 授予 * 上的所有特权。 * TO '我的用户名'@'localhost'; 刷新特权;

    这将创建一个可以从任何主机登录的用户。

    【讨论】:

    • 我已经创建了具有所有权限的用户。并成功连接mysqli。但是对于具有相同用户通行证的 pdo,给我错误。
    • 我解决了将pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock设置为php.ini的问题