Kısacası, MariaDB’de
UPDATE mysql.user SET plugin = 'mysql_native_password',
Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
NEWPASSWORD'ü istediğiniz şifre ile değiştirin ve başka her şey konuşalım.
Buradaki sorun, MariaDB veya MySQL kurulduğunda / güncellendiğinde (özellikle bazı noktalarda bir parola olmadan ayarlanmışsa), o zaman Kullanıcılar tablosunda parolanın gerçekten boş (veya yok sayılmış) olması ve oturum açmanın sisteme bağlı kullanıcıya bağlı olmasıdır. MySQL kullanıcısına. Bunu, sistem köküne geçerek aşağıdaki gibi test edebilirsiniz ve ardından şunu yazın:
mysql -uroot -p
Ardından şifre veya yanlış şifre girin. Muhtemelen içeri girersiniz. ( # mysql
Parola alakasız olduğu ve kullanıcı tanımlı olduğu için unix kökünden giriş bile yapabilirsiniz ).
Peki neler oluyor? Kök olarak giriş yapar ve aşağıdakileri yaparsanız:
select User,host,plugin from mysql.user;
+----------------+-----------+-----------------------+
| User | host | plugin |
+----------------+-----------+-----------------------+
| root | localhost | auth_socket |
+----------------+-----------+-----------------------+
auth_socket
( unix_socket
MariaDB'de okuyabilir ) not edersiniz . Bu soketler şifreleri yok sayar ve karşılık gelen Unix kullanıcısının şifre kontrolü yapmadan girmesine izin verir . Bu nedenle root ile giriş yapabilirsiniz ancak farklı bir kullanıcı ile giriş yapamazsınız .
Dolayısıyla çözüm, Kullanıcıları kullanmayacak şekilde güncellemek auth_socket/unix_socket
ve bir şifreyi uygun şekilde ayarlamaktır.
2017'den itibaren Ubuntu sürüm 16'da olan MariaDB'de (<10.2, aşağıya bakınız). Bu yeterli olacaktır. NEWPASSWORD şifrenizdir. mysql_native_password
sen yazıyorsun
UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
(Eklentiyi boş olarak ayarlamak işe yarayabilir. YMMV. Bunu denemedim. Bu bir alternatif.)
UPDATE mysql.user SET plugin = '', Password = PASSWORD('NEWPASSWORD') WHERE User = 'root';
Aksi takdirde:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD';
Sonra
FLUSH PRIVILEGES;
Kayıt için, kullanıcıyı silmeyi ve onu '%' ile yeniden oluşturmayı içeren çözüm, beni tamamen veritabanından hapsetmeme neden oldu ve grant
açıklamayı tamamen doğru yapmazsanız başka sorunlara neden olabilir - zaten sahip olduğunuz kökü güncellemeniz daha kolay.
Tecrübelerime göre, sorun yalnızca kök kullanıcı ile olur, çünkü diğer kullanıcılar ilk kurulum / güncellemenin bir parçası olarak el ile eklenmez.