Câu hỏi phpmyadmin không hiển thị lược đồ


Tôi có một máy chủ với một số lượng lớn cơ sở dữ liệu mysql. Gần đây một số lược đồ đã ngừng hiển thị khi đăng nhập dưới dạng Gốc.

root user - until now always used

Nếu tôi sử dụng thông tin đăng nhập cho cơ sở dữ liệu cụ thể đó thì tôi có thể thấy nó.

direct user

Các 'chủ sở hữu' cho cơ sở dữ liệu này là gốc nhưng những người khác mà cũng không nhìn thấy được root được sở hữu bởi những người khác.

Nó có vẻ là cơ sở dữ liệu mà chúng tôi đã truy cập và làm việc trên gần đây mà biến mất nhưng bây giờ có hơn 5 mà không nhìn thấy được. Nó không phải là một bộ nhớ cache địa phương và bất cứ ai cũng sử dụng đăng nhập root có cùng một vấn đề.


2
2018-04-17 13:45


gốc


chỉ cần bỏ phiếu mà không bình luận? mọi lời khuyên sẽ là dandy. - TomFirth
(DISCLAIMER: Không phải là người phpmyadmin) Vui lòng chạy truy vấn sau: SELECT USER() AttemptedToConnectAsUser,CURRENT_USER() AllowedToConnectAsUser; Đầu ra là gì ??? - RolandoMySQLDBA
AttemptedToConnectAsUser AllowedToConnectAsUser cpses _ ******** @ localhost cpses _ ******** @ localhost Tôi khá thiếu kinh nghiệm với phpmyadmin, tôi giả định điều này được tạo ngẫu nhiên nhưng nên hiển thị này là 'root @ localhost' ? - TomFirth
Nó không được tạo ngẫu nhiên chút nào. Xem bài đăng của tôi superuser.com/questions/266758/… để biết thêm chi tiết. - RolandoMySQLDBA
Trong tệp cấu hình của bạn, bạn có các giá trị cho các tùy chọn $ cfg ['Servers'] [$ i] ['hide_db'] hoặc $ cfg ['Servers'] [$ i] ['only_db']? - smokes2345


Các câu trả lời:


Nếu là của bạn NGƯỜI DÙNG HIỆN TẠI() không nói root@localhost, sau đó bạn không có quyền root và không được phép kết nối như vậy.

Để xem những đặc quyền thực tế bạn có sau khi kết nối, hãy chạy

SHOW GRANTS;

Khi bạn kết nối với một cơ sở dữ liệu cụ thể, bạn sẽ có thể thấy

  • các bảng của cơ sở dữ liệu đó
  • siêu dữ liệu trong INFORMATION_SCHEMA chỉ cho cơ sở dữ liệu đó

Ví dụ: bạn đã kết nối với buyspace_systdb

Đầu ra từ SHOW GRANTS; rất có thể sẽ xuất hiện một cái gì đó như thế này

GRANT USAGE ON *.* ...
GRANT ALL PRIVILEGES ON buyspace_systdb.* TO ...

Người dùng root@localhost sẽ hoạt động nếu bạn đăng nhập từ bên trong máy chủ cục bộ đó. Nếu bạn đang đăng nhập từ xa, root@localhost sẽ không cho phép NGƯỜI DÙNG() để xác thực là NGƯỜI DÙNG HIỆN TẠI(). Bằng chứng về điều này là trong màn hình đầu tiên trong câu hỏi của bạn. Lưu ý rằng bạn chỉ có thể xem thông tin_schema. Nó sẽ hầu như trống rỗng với ngoại lệ của information_schema.schemata mà sẽ có 1 hoặc 2 mục. Nếu root@'%' tồn tại trong mysql.user và có các đặc quyền giống như root@localhost, sau đó nó sẽ được phép xem mọi thứ như root@localhost.

MySQL có một lược đồ xác thực có hiệu ứng xoắn ốc xuống. Nếu người dùng bạn cố gắng kết nối không tồn tại, nó sẽ thử tên người dùng mơ hồ hơn (cho phép ký tự đại diện hoặc các đặc quyền hạn chế). Xem bài đăng DBA StackExchange của tôi Lỗi MySQL: Truy cập bị từ chối đối với người dùng 'a' @ 'localhost' (sử dụng mật khẩu: CÓ)  để biết thêm chi tiết về điều này.

Điểm mấu chốt: Bạn không thể kết nối như root@localhost từ một địa điểm từ xa


1
2018-05-12 14:47