Tại thời điểm mysql nhận được kết nối, tất cả những gì nó có để xác định hệ thống từ xa là địa chỉ IP . Sau đó, nó phải thực hiện tra cứu "ngược dns" để chuyển đổi địa chỉ IP của hệ thống yêu cầu thành tên máy chủ, để nó có thể tra cứu tên máy chủ trong bảng ủy quyền. Mặc dù bạn có thể ánh xạ nhiều tên máy chủ đến một địa chỉ IP duy nhất, như bạn đã làm, không có cách nào để mysql biết tên máy chủ nào được chỉ định ban đầu. Tại thời điểm đó, tất cả những gì nó có là 127.0.0.1 và trình phân giải DNS sẽ trả về tên 'localhost'. Ngay cả khi đã thay đổi điều đó, bạn chỉ có thể đặt tên cho nó, do đó, chương trình của bạn sẽ không hoạt động.
Tuy nhiên, bạn có thể cung cấp cho bộ điều hợp mạng của mình nhiều địa chỉ IP KHÁC NHAU. Tôi không biết chi tiết về việc thiết lập điều này trên Ubuntu, nhưng nó tương đối dễ dàng. Sau đó, bạn có thể thiết lập nhiều tên máy chủ, mỗi tên có IP riêng kết nối trở lại hệ thống của bạn. Trong thiết lập mysql của bạn, hãy chỉ định địa chỉ IP thay vì tên máy chủ trong các lệnh GRANT của bạn để tránh gặp phải vấn đề với rDNS.