Saya ingin menukar kata laluan pengguna dalam MySQL8.0, tetapi hampir tiada kaedah dalam talian kelihatan berfungsi.
Berikut ialah butiran jadual mysql.user saya:
mysql> select user, host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | Excalibur | % | | yyy | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
Saya telah mencuba arahan berikut:
alter user 'yyy'@'%' identified with mysql_native_password by '12345';
dan menerima mesej ralat:
ERROR 1396 (HY000): Operation ALTER USER failed for 'yyy'@'%'
Saya juga cuba memanipulasi jadual mysql.user sendiri:
update user set authentication_string=sha1('12345') where user = 'yyy' ; flush privileges;
Semasa ia berfungsi, Saya tidak boleh log masuk ke yyy melalui (apa yang saya sepatutnya) kata laluan 12345. Kemudian saya melihat pada meja dan ia kelihatan sangat pelik:
+------------------+-----------+------------------------------------------------------------------------+ | user | host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | Excalibur | % | $Arrreee5$tE.D2|7^FTRYjmg1APzveuTWyJ1BaO2al1GKvO3UJO6ZlX06jqbNkT5 | | yyy | % | 8cb2237d0679ca88db6464eac60da96345513964 | | mysql.infoschema | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | ...
Untuk MySQL 8.0
Pengguna biasa menggunakan arahan berikut untuk menukar kata laluan mereka
Untuk pengguna root, gunakan arahan berikut untuk menukar kata laluan
P.S Semak menggunakan kata laluan dengan "$A$005$", pemalam pengesahan caching_sha2_password harus digunakan, tanpa "WITH caching_sha2_password" ia tidak akan berfungsi untuk pengguna root. Jika ia adalah pengguna umum Keizinan perlu diberikan.