Bertemu dengan "SQLSTATE[HY000] [1698] Akses ditolak untuk pengguna ' ralat root'@'localhost'" selepas menyediakan pelayan web Ubuntu boleh mengecewakan. Walaupun akses pangkalan data kelihatan boleh diakses melalui terminal, ralat dalam PHP dan phpMyAdmin berterusan. Memahami punca asas adalah penting untuk menyelesaikan isu ini.
Sekatan Pengguna Root
MySQL 5.7 dan seterusnya memperkenalkan sekatan pada pengguna root. Tanpa keistimewaan yang tinggi, akses terus ke MySQL menggunakan mysql -u root tidak lagi boleh dilakukan. Sebaliknya, sudo mysql -u root diperlukan, mendorong kemasukan kata laluan.
Sekatan ini dilanjutkan kepada GUI dan aplikasi baris bukan arahan. Untuk mengurangkan isu ini, cipta pengguna baharu dengan keistimewaan yang diperlukan dan bukannya menggunakan pengguna akar.
Pelaksanaan dalam PHP
Dalam kod PHP yang disediakan, kelayakan log masuk adalah berkod keras. Untuk memintas sekatan pengguna root, ubah suai kaedah __construct() untuk memasukkan pengguna baharu dengan kebenaran yang sesuai:
<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>
Ganti $this->name dan $this->pass dengan kelayakan pengguna yang baru dibuat . Pastikan pengguna memiliki keistimewaan yang diperlukan untuk mengakses pangkalan data.
Sumber Tambahan
Untuk mendapatkan maklumat lanjut dan langkah penyelesaian masalah, rujuk sumber berikut:
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengakses Pangkalan Data MySQL Saya sebagai Pengguna Root di Ubuntu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!