Nếu bạn gặp lỗi cho bạn biết rằng quyền truy cập bị từ chối đối với root
người dùng trong MariaDB, bài viết này có thể hữu ích.
Lỗi
Tôi đang cố gắng nhập thông tin múi giờ của hệ thống vào MariaDB bằng lệnh sau:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Nhưng nó dẫn đến lỗi sau:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Nguyên nhân
Sau khi điều tra điều này, tôi nhận ra rằng root
người dùng chưa đặt mật khẩu.
Khi tôi chạy truy vấn sau:
SELECT user, password
FROM user
WHERE User = 'root';
Tôi nhận được kết quả sau:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
Tài liệu MariaDB nêu rõ những điều sau:
Tuy nhiên, một số người dùng có thể muốn đăng nhập với quyền root MariaDB mà không cần sử dụng sudo. Do đó, phương pháp xác thực cũ - mật khẩu MariaDB thông thường - vẫn có sẵn. Theo mặc định, nó bị tắt (“không hợp lệ” không phải là băm mật khẩu hợp lệ), nhưng người ta có thể đặt mật khẩu bằng
SET PASSWORD
thông thường tuyên bố. Và vẫn giữ được quyền truy cập không cần mật khẩu thông qua sudo.
Vì vậy, đó giống như câu trả lời của chúng tôi.
Giải pháp
Theo đoạn trên, tôi cần đặt mật khẩu cho root
người dùng:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");
Chạy nó (với một mật khẩu khác) đã thực hiện thủ thuật.
Vì vậy, nếu gặp lỗi trên, có lẽ điều này sẽ hữu ích.