Memberi Keistimewaan tanpa Akses Ralat Ditolak
Apabila cuba memberikan keistimewaan, pengguna MySQL mungkin menghadapi ralat "Akses ditolak untuk 'root' pengguna @'localhost' (menggunakan kata laluan: YA)." Ini boleh membingungkan, kerana ia mungkin kelihatan seperti pengguna mempunyai kebenaran yang diperlukan.
Mengesahkan Keistimewaan
Untuk mengesahkan bahawa pengguna mempunyai keistimewaan yang sesuai, jalankan arahan berikut :
SELECT user(); SELECT current_user(); SHOW GRANTS FOR 'root'@'localhost'; SELECT * FROM mysql.user WHERE User='root';
Arahan ini harus mengesahkan bahawa pengguna sememangnya root@localhost dan mempunyai yang diperlukan kebenaran, termasuk:
Isu: Memberi Keistimewaan pada Jadual Tertentu
Walaupun mempunyai kebenaran ini, ralat mungkin berlaku apabila cuba memberikan keistimewaan pada tertentu jadual:
GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
Ini kerana jadual mysql.users dianggap luar had untuk semua pengguna kecuali root.
Penyelesaian: Pemberian Keistimewaan pada Semua Pangkalan Data
Untuk mengatasinya, gunakan arahan berikut, yang memberikan keistimewaan pada semua pangkalan data kecuali mysql.users:
GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
Menggunakan %. bukannya .* memastikan semua pangkalan data disertakan kecuali jadual mysql.users. Ini sepatutnya berjaya memberikan keistimewaan tanpa mencetuskan ralat dinafikan akses.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Akses Ditolak' Semasa Memberi Keistimewaan MySQL Walaupun Mempunyai Keizinan yang Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!