Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyelesaikan ralat ERROR 1064 (42000) yang dilaporkan oleh MySQL semasa pemberian

Bagaimana untuk menyelesaikan ralat ERROR 1064 (42000) yang dilaporkan oleh MySQL semasa pemberian

PHPz
PHPzke hadapan
2023-05-28 23:53:133934semak imbas

Kebanyakan kaedah geran yang terdapat di Internet akan melaporkan ralat Sebab utama ialah kaedah asal tidak lagi boleh digunakan selepas MySQL versi 8.0

Pelaporan ralat

RALAT 1064. (42000): Anda mempunyai ralat dalam sintaks SQL anda, semak manual yang sepadan dengan versi pelayan MySQL anda untuk sintaks yang betul untuk digunakan berhampiran 'dikenal pasti oleh '123456' di baris 1

Betul kaedah pemberian
SELECT version();
grant all privileges on test.* to test@'%' identified by '123456';
create user test@'localhost' identified by '123456';

kata laluan MySQL8.0 tidak boleh log masuk

grant all privileges on test.* to test@'localhost';

Tambahan: MySQL ERROR 1064 (42000) ——Grant sentiasa melaporkan ralat yang berlaku walau apa cara sekalipun, pada?

Rakan yang telah menggunakan MySQL tahu bahawa selalunya terdapat beberapa operasi geran (kebenaran) Saya tertanya-tanya jika anda mengalami masalah sedemikian.

RALAT 1064 (42000): Anda mempunyai ralat dalam sintaks SQL anda, semak manual yang sepadan dengan versi pelayan MySQL anda untuk sintaks yang betul untuk digunakan berhampiran ‘dikenal pasti oleh ‘123456’’ ; pada baris 1

MySQL grant SQL

ditampal ke terminal dan dilaksanakan,

melaporkan ralat!

Selepas menaip setiap huruf, ia akan dilaksanakan,

ralat lain akan dilaporkan!

Berulang kali mengesahkan pelaksanaan berkali-kali, dan melaporkan ralat sekali lagi!
Saya menjadi gila, apa yang perlu saya lakukan? Jangan risau, teruskan membaca artikel tersebut.
Versi yang berbeza menyebabkan

Pertama sekali, semak versi MySQL anda yang melaporkan ralat adalah 8.0 Anda tidak akan mendapat ralat dengan menghafal atau pun arahan menaip buta 5.7 biasanya digunakan paling banyak. Percaya atau tidak?

Uji dengan data sebenar

1 Cuba dengan MySQL 8.0 dahulu

flush privileges;

Laporkan ralat

2 >
alter user test@'localhost' identified with mysql_native_password by '123456';

Berjaya.

Rakan-rakan yang prihatin, adakah anda perasan bahawa terdapat mesej dalam hasil yang dikembalikan: 1 amaran, apakah itu?

mysql> grant all privileges on test.* to test@'%' identified by '123456';  
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 '123456'' at line 1

Ternyata dalam MySQL 5.7, pegawai itu mengingatkan bahawa sintaks SQL ini akan ditamatkan.

Pelaksanaan geran yang betul

Jadi dalam MySQL versi 8.0 dan lebih baru, bagaimanakah kita melaksanakan geran dengan betul?

Buat pengguna dahulu dan kemudian berikan kebenaran.

mysql> grant all privileges on test.* to test@'%' identified by '123456';    
Query OK, 0 rows affected, 1 warning (0.08 sec)
mysql> flush privileges;

Adalah disyorkan untuk menggunakan kaedah ini untuk memberikan kebenaran dalam penggunaan masa hadapan, kerana ia juga terpakai untuk MySQL versi 5.7, dan kaedah rasmi penciptaan pengguna satu klik dan pemberian kebenaran telah ditinggalkan .

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat ERROR 1064 (42000) yang dilaporkan oleh MySQL semasa pemberian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam