Bạn có thể có một người dùng ẩn danh ''@'localhost'
hoặc ''@'127.0.0.1'
.
Theo hướng dẫn :
Khi có thể kết hợp nhiều trận đấu, máy chủ phải xác định sử dụng chúng trong số chúng. Nó giải quyết vấn đề này như sau: (...)
- Khi một máy khách cố gắng kết nối, máy chủ sẽ xem qua các hàng [của bảng mysql.user] theo thứ tự được sắp xếp.
- Máy chủ sử dụng hàng đầu tiên khớp với tên máy chủ và tên người dùng của máy khách.
(...) Máy chủ sử dụng quy tắc sắp xếp theo thứ tự các hàng có giá trị Máy chủ cụ thể nhất trước tiên . Tên máy chủ bằng chữ [chẳng hạn như 'localhost'] và địa chỉ IP là cụ thể nhất.
Do đó, một người dùng ẩn danh như vậy sẽ "che dấu" bất kỳ người dùng nào khác như '[any_username]'@'%'
khi kết nối localhost
.
'bill'@'localhost'
không khớp 'bill'@'%'
, nhưng sẽ khớp (vd)''@'localhost'
trước.
Giải pháp được đề xuất là bỏ người dùng ẩn danh này (đây thường là một việc nên làm).
Các chỉnh sửa dưới đây hầu hết không liên quan đến câu hỏi chính. Đây chỉ là để trả lời một số câu hỏi trong các ý kiến khác trong chủ đề này.
Chỉnh sửa 1
Xác thực như 'bill'@'%'
thông qua một ổ cắm.
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass --socket = / tmp / mysql-5.5.sock
Chào mừng bạn đến với màn hình MySQL (...)
mysql người dùng CHỌN, lưu trữ TỪ mysql.user;
+ ------ + ----------- +
| người dùng | máy chủ |
+ ------ + ----------- +
| hóa đơn | % |
| root | 127.0.0.1 |
| root | :: 1 |
| root | lưu trữ cục bộ |
+ ------ + ----------- +
4 hàng trong bộ (0,00 giây)
mysql CHỌN NGƯỜI DÙNG (), CURRENT_USER ();
+ ---------------- + ---------------- +
| NGƯỜI DÙNG () | HIỆN TẠI_USER () |
+ ---------------- + ---------------- +
| hóa đơn @ localhost | hóa đơn @% |
+ ---------------- + ---------------- +
1 hàng trong bộ (0,02 giây)
mysql HIỂN THỊ BIỂU TƯỢNG THÍCH 'Skip_networking';
+ ----------------- + ------- +
| Biến_ame | Giá trị |
+ ----------------- + ------- +
| bỏ qua mạng | TRÊN |
+ ----------------- + ------- +
1 hàng trong bộ (0,00 giây)
Chỉnh sửa 2
Chính xác thiết lập tương tự, ngoại trừ tôi kích hoạt lại mạng và bây giờ tôi tạo một người dùng ẩn danh ''@'localhost'
.
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql
Chào mừng bạn đến với màn hình MySQL (...)
mysql TẠO NGƯỜI DÙNG '' @ 'localhost' được xác định bởi 'otherpass';
Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây)
mys> tạm biệt
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
--socket = / tmp / mysql-5.5.sock
LRI 1045 (28000): Truy cập bị từ chối đối với người dùng 'bill' @ 'localhost' (sử dụng mật khẩu: CÓ)
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-h127.0.0.1 --protatio = TCP
LRI 1045 (28000): Truy cập bị từ chối đối với người dùng 'bill' @ 'localhost' (sử dụng mật khẩu: CÓ)
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -ppass \
-hlocalhost --protatio = TCP
LRI 1045 (28000): Truy cập bị từ chối đối với người dùng 'bill' @ 'localhost' (sử dụng mật khẩu: CÓ)
Chỉnh sửa 3
Tình trạng tương tự như trong chỉnh sửa 2, hiện cung cấp mật khẩu người dùng ẩn danh.
root @ myhost: /home/mysql-5.5.16-linux2.6-x86_64# ./mysql -ubill -panotherpass -hlocalhost
Chào mừng bạn đến với màn hình MySQL (...)
mysql CHỌN NGƯỜI DÙNG (), CURRENT_USER ();
+ ---------------- + ---------------- +
| NGƯỜI DÙNG () | HIỆN TẠI_USER () |
+ ---------------- + ---------------- +
| hóa đơn @ localhost | @localhost |
+ ---------------- + ---------------- +
1 hàng trong bộ (0,01 giây)
Kết luận 1, từ chỉnh sửa 1: Người ta có thể xác thực như 'bill'@'%'
thông qua một ổ cắm.
Kết luận 2, từ chỉnh sửa 2: 'something'@'localhost'
Rõ ràng một người kết nối qua TCP hoặc qua ổ cắm không có tác động đến quá trình xác thực (ngoại trừ người ta không thể kết nối như bất kỳ ai khác nhưng thông qua ổ cắm, rõ ràng).
Kết luận 3, từ chỉnh sửa 3: Mặc dù tôi đã chỉ định -ubill
, tôi đã được cấp quyền truy cập với tư cách là người dùng ẩn danh. Điều này là do "quy tắc sắp xếp" được khuyên ở trên. Lưu ý rằng trong hầu hết các cài đặt mặc định, không có mật khẩu, người dùng ẩn danh tồn tại (và cần được bảo mật / xóa).
FLUSH PRIVILEGES
không