遇到“SQLSTATE[HY000] [1698] 用户'访问被拒绝设置 Ubuntu Web 服务器后出现 root'@'localhost'” 错误可能会令人沮丧。虽然数据库访问似乎可以通过终端进行访问,但 PHP 和 phpMyAdmin 中的错误仍然存在。了解根本原因对于解决此问题至关重要。
Root 用户限制
MySQL 5.7 开始引入了对 root 用户的限制。如果没有提升的权限,则无法再使用 mysql -u root 直接访问 MySQL。相反,需要 sudo mysql -u root,提示输入密码。
此限制扩展到 GUI 和非命令行应用程序。要缓解此问题,请创建一个具有必要权限的新用户,而不是使用 root 用户。
PHP 中的实现
在提供的 PHP 代码中,登录凭据为硬编码。要绕过 root 用户限制,请修改 __construct() 方法以合并具有适当权限的新用户:
<code class="php">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(); } }</code>
将 $this->name 和 $this->pass 替换为新创建的用户的凭据。确保用户拥有访问数据库所需的权限。
其他资源
有关进一步的见解和故障排除步骤,请参阅以下资源:
以上是为什么我无法在 Ubuntu 中以 root 用户身份访问我的 MySQL 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!