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@localhost
akan bekerja jika Anda masuk dari dalam server lokal itu. Jika Anda masuk secara jarak jauh, root@localhost
tidak 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.user
dan 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@localhost
dari lokasi yang jauh