Pertanyaan :Saya telah menggunakan IDENTIFIED BY 'password' bersama dengan pernyataan GRANT selama bertahun-tahun di banyak versi MySQL. Namun, hal yang sama gagal di MySQL versi 8.0.26 pada rilis CentOS Stream baru saya 8. Di bawah ini adalah pesan kesalahan lengkap. Apa yang bisa menjadi masalah? – Tushar.
mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost' IDENTIFIED BY 'qcuser123'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near IDENTIFIED BY 'quser123' at line 1
Kesalahan saat menggunakan GRANT dengan IDENTIFIED by password
Tushar, penggunaan kata sandi IDENTIFIED BY dengan pernyataan GRANT telah ditinggalkan sejak MySQL versi 5.7.6. Artinya Anda harus menggunakan IDENTIFIED by password dengan CREATE USER atau ALTER USER dan menerapkan GRANT PRIVILEGES seperti gambar di bawah ini:
BUAT PENGGUNA dan tetapkan sandi.
mysql> CREATE USER 'quser'@'localhost' IDENTIFIED BY 'qc123'; Query OK, 0 rows affected (0.12 sec)
Tambahkan hak istimewa menggunakan GRANT:
mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost'; Query OK, 0 rows affected (0.03 sec)
Mengapa ada perubahan di MySQL terbaru?
Perubahan tersebut masuk akal karena alasan di bawah ini:
- Menggunakan
IDENTIFIED BY
kata sandi dengan hak GRANT akan menetapkan kata sandi apa pun yang ditentukan sebagai kata sandi baru untuk akun tersebut. Asumsikan jika ada akun yang sudah ada dengan kata sandi yang berbeda, menjalankan hak GRANT bersama dengan kata sandi IDENTIFIED BY akan menimpa kata sandi yang ada. Jadi menghapus IDENTIFIED dari GRANT berarti, akun tetap dengan kata sandi yang disetel selama pembuatan. - Pada MySQL versi 5.7.2, jika akun sudah ada, DIIDENTIFIKASI dengan 'sandi' dilarang dan harus digunakan hanya selama pembuatan akun yaitu, dengan
CREATE USER
atauALTER USER
. - GRANT dapat membuat akun pengguna jika tidak ada.
- Jika
NO_AUTO_CREATE_USER enabled
- Jika akun yang ditentukan dalam pernyataan GRANT tidak ada, maka GRANT akan gagal membuat akun kecuali kata sandi yang tidak kosong ditentukan melalui IDENTIFIED BY atau melalui IDENTIFIED WITH.
- Jika
NO_AUTO_CREATE_USER disabled
- Jika akun yang ditentukan dalam pernyataan GRANT tidak ada, maka GRANT membuat akun. Ini bisa menjadi tidak aman jika tidak ada kata sandi yang ditentukan melalui IDENTIFIED BY.
- Jika
Akhirnya, HIBAH dengan kata sandi IDENTIFIED BY telah ditinggalkan dan akun pengguna harus dibuat menggunakan CREATE USER atau ALTER USER.
melalui StackOverflow.