php - SQLSTATE[HY000] [1698] 拒绝用户访问 'root' @'localhost'

标签 php mysql authentication root

我刚刚安装了Ubuntu 16.04 (Xenial Xerus) 并在其上安装了 Web 服务器。一切正常,但我无法访问数据库。 即使我创建新用户并授予所有权限,我也无法创建数据库

在 PHP 中我收到此错误:

SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

当我尝试登录终端时,它可以工作,但在 PHP 和 phpMyAdmin 中却不行。

PHP 代码:

protected $host = '127.0.0.1';
protected $db = 'dbname';
protected $name = 'root';
protected $pass = 'root';
protected $conn;
private static $settings = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
);

public function __construct() {
    try {
        $this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->name, $this->pass, self::$settings);
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}

最佳答案

事实证明你不能在 5.7 中使用 root 用户而不成为 sudo呃。这意味着您不能只运行 mysql -u root 而必须改为执行 sudo mysql -u root

这也意味着如果您在 GUI(或任何非命令行应用程序)中使用 root 用户,它将不再工作。要使其正常工作,您必须创建一个具有所需权限的新用户并使用它。

this answer了解更多详情。

关于php - SQLSTATE[HY000] [1698] 拒绝用户访问 'root' @'localhost',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36864206/

相关文章:

php - 如果数据库中的值未支付或为 0(二进制),如何将颜色更改为红色?

mysql - PhpMyAdmin 导出 : reference without uppercase

MySQL - 我如何知道我的查询已调整?

php - 如何从mysql中的列/表中选择多行?

php - 在 Facebook 帖子中标记他人?

php - 全局变量不在 PHP 中的静态类方法中更新

php - Codeigniter 连接多个 id 并显示到 View

ios - 适用于 iOS 6 的 Facebook SDK 3.2 : Can't login -> openURL not called/AppId & URL is correct

php - Android 使用 token session 登录 : like user logins and stays in session until logout

c# - WCF:配置角色以访问数据库资源