Khoảng mỗi tháng, tôi gặp lỗi sau:
Lỗi MySQL:: 'Quyền truy cập bị từ chối đối với người dùng' root'@'localhost'
tôi điều hướng đến câu hỏi StackOverflow này về cách xử lý lỗi và
sau đó tôi trở lại với những gì tôi đang làm.
Giải pháp thường liên quan đến việc chạy một câu lệnh SQL từ mysql
chương trình bắt đầu từ nguồn gốc
Tài khoản Unix:
THAY ĐỔI NGƯỜI DÙNG 'root'@'localhost' ĐƯỢC XÁC ĐỊNH VỚI mysql_native_password BẰNG 'root';
Khi bạn THAY ĐỔI NGƯỜI DÙNG
trong MySQL, nó phải giữ nguyên như vậy cho đến khi bạn chạy một cái khác THAY ĐỔI NGƯỜI DÙNG
chỉ huy.
Trên Ubuntu, sự cố sẽ quay trở lại sau một thời gian. Một ngày nào đó, tôi sẽ thử kết nối với MySQL và nhận thấy rằng mật khẩu không còn hoạt động nữa. Tôi đã không viết bất kỳ kịch bản nào mà tôi quên mất. Điều này sẽ xảy ra trên bản cài đặt Ubuntu mới, cho dù từ đĩa CD, Vagrantfile hay phiên bản AWS. Đôi khi, bất cứ tập lệnh nào chịu trách nhiệm thực hiện điều này sẽ làm mọi thứ trở nên tồi tệ đến mức THAY ĐỔI NGƯỜI DÙNG
tuyên bố ở trên không còn phục hồi từ vấn đề.
Không có gì trong bất kỳ /etc/cron.*
thư mục nên gây ra điều này.
Không có gì trong/etc/mysql/* rõ ràng khiến điều này xảy ra.
Tôi đã lấy toàn bộ hệ thống tệp và thấy rằng không có tập lệnh không nén, không mã hóa nào chạy THAY ĐỔI NGƯỜI DÙNG
truy vấn để thực hiện đảo ngược.
Điều duy nhất trong /var/log có thể liên quan là nâng cấp không giám sát
, nhưng tôi không thấy việc nâng cấp MySQL sẽ làm hỏng tất cả các cài đặt xác thực của nó mỗi lần như thế nào.
Như một giải pháp thay thế, tôi đã sử dụng vũ lực để ngăn chặn tập lệnh bí mật của Canonical:
chattr +i /var/lib/mysql/mysql/user.MYD
Điều đó làm cho nó không thể chạy THAY ĐỔI NGƯỜI DÙNG
các lệnh, vì vậy bất kỳ công việc nào mà Canonical có đang thực hiện việc này đều sẽ thất bại. Nhưng điều đó cũng có nghĩa là tôi phải nhớ rằng tôi đã làm điều này nếu tôi cần thực hiện một thay đổi hợp pháp đối với bảng này.
Có ai biết phần mềm nào trong Ubuntu chịu trách nhiệm cho hành vi này không?