phpmyadmin tidak menampilkan skema

2

Saya memiliki server dengan sejumlah besar database mysql. Baru-baru ini beberapa skema telah berhenti ditampilkan ketika masuk sebagai Root.

root user - sampai sekarang selalu digunakan

Jika saya menggunakan login untuk database spesifik itu maka saya bisa melihatnya.

pengguna langsung

'Pemilik' untuk database ini adalah root tetapi yang lain yang juga tidak terlihat oleh root dimiliki oleh orang lain.

Tampaknya ini adalah basis data yang telah kami akses dan kerjakan baru-baru ini yang hilang tetapi sekarang ada lebih dari 5 yang tidak terlihat. Ini bukan cache lokal dan siapa pun yang menggunakan login root memiliki masalah yang sama.

TomFirth
sumber
hanya memilih tanpa komentar? saran apa pun akan bagus.
TomFirth
(DISCLAIMER: Bukan orang phpmyadmin) Silakan jalankan permintaan berikut: SELECT USER() AttemptedToConnectAsUser,CURRENT_USER() AllowedToConnectAsUser;Apa outputnya ???
RolandoMySQLDBA
AttemptedToConnectAsUser DiizinkanToConnectAsUser cpses _ ******** @ localhost cpses _ ******** @ localhost Saya cukup berpengalaman dengan phpmyadmin, saya berasumsi ini dibuat secara acak tetapi harus ditampilkan sebagai 'root @ localhost' ?
TomFirth
Itu tidak dihasilkan secara acak sama sekali. Lihat posting saya superuser.com/questions/266758/… untuk lebih jelasnya.
RolandoMySQLDBA
Dalam file konfigurasi Anda, apakah Anda memiliki nilai untuk opsi $ cfg ['Server'] [$ i] ['hide_db'] atau $ cfg ['Server'] [$ i] ['only_db']?
smokes2345

Jawaban:

1

Jika CURRENT_USER () Anda tidak mengatakan root@localhost, maka Anda tidak memiliki hak akses root dan tidak diizinkan untuk terhubung.

Untuk melihat hak istimewa apa yang sebenarnya Anda miliki setelah terhubung, jalankan ini

SHOW GRANTS;

Saat Anda terhubung ke database tertentu, Anda seharusnya bisa melihatnya

  • tabel dari database itu
  • metadata di INFORMATION_SCHEMA hanya untuk database itu

Katakanlah, misalnya, Anda terhubung ke buyspace_systdb

Output dari SHOW GRANTS;kemungkinan besar akan muncul seperti ini

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

Pengguna root@localhostakan bekerja jika Anda masuk dari dalam server lokal itu. Jika Anda masuk secara jarak jauh, root@localhosttidak akan mengizinkan USER () untuk mengautentikasi sebagai CURRENT_USER () . Buktinya ada di tampilan pertama dalam pertanyaan Anda. Perhatikan bahwa Anda hanya dapat melihat information_schema. Ini akan hampir kosong dengan pengecualian information_schema.schemata yang akan memiliki 1 atau 2 entri. Jika root@'%'ada mysql.userdan memiliki hak yang sama root@localhost, maka akan diizinkan untuk melihat semuanya root@localhost.

MySQL memiliki skema otentikasi yang memiliki efek spiral ke bawah. Jika pengguna yang Anda coba hubungi tidak ada, itu akan mencoba nama pengguna yang lebih samar (memungkinkan untuk wildcard atau hak terbatas). Lihat posting DBA StackExchange saya kesalahan MySQL: Akses ditolak untuk pengguna 'a' @ 'localhost' (menggunakan kata sandi: YES) untuk rincian lebih lanjut tentang ini.

Intinya : Anda tidak dapat terhubung root@localhostdari lokasi yang jauh

RolandoMySQLDBA
sumber