Saya mencoba untuk DROP pengguna anonim dari database mysql.users saya. Namun, saya mendapatkan perilaku aneh. Ketika saya memasukkan perintah:
DROP User ''@'WOPR';
Saya mendapat pesan kesalahan umum. Jadi, saya reboot mesin saya, dan mencobanya lagi. Kali ini saya mendapat tanggapan
Query OK, 0 rows affected.
Tapi ketika saya dimasukkan
SELECT User, Host, Password FROM mysql.user WHERE User='';
Pengembaliannya adalah:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
(WOPR adalah nama host saya)
Saya menjalankan perintah
DROP User ''@'WOPR';
dan dapatkan hasil yang sama.
Saya menjalankan instalasi baru MySQL 5.5 di Arch Linux, kernel versi 2.6.33.
Adakah yang tahu apa yang dapat menyebabkan perilaku ini?
Jawaban:
Ini harus dilakukan untuk Anda.
Cobalah !!!
CAVEAT
MySQL memiliki pengguna tertentu yang sudah diinstal ke mysql.user. Juga, mysql.db hadir dengan dua pengguna yang memiliki akses anonim dan hak istimewa penuh untuk menguji basis data.
Lakukan saja ini
dan Anda akan melihat bahwa siapa pun yang terhubung ke pengujian atau basis data apa pun yang dimulai dengan test_ dapat melakukan semuanya di dalam basis data pengujian. Ini buruk karena seseorang dengan akses penuh ke database uji apa pun dapat memakan disk dalam hitungan menit.
Contoh:
OK, masalah besar. Itu membuat tabel dengan 4 byte.
Sekarang coba jalankan pernyataan SQL ini 30 kali:
Hai tabel instan dengan 1.073.741.824 baris (4GB + file) !!! Pencitraan memiliki hak penuh ke database uji di mana Anda dapat mendatangkan malapetaka semacam ini pada disk.
Saran saya kepada Anda adalah menjalankan ini untuk membersihkan akses pengguna uji:
Untuk klarifikasi lebih lanjut, lihat posting saya MySQL: Mengapa ada entri "test" di mysql.db?
Bersulang !!!
sumber
drop user
sintaks alih-alih memodifikasimysql.user
tabel yang mendasarinya secara langsung?DROP USER
sintaks tidak berfungsi ketika bidang pengguna kosong (string kosong). Anda harus melakukannya dengan cara yang ditentukan jawaban.mysql.user
meja?mysql.db
pada saat instalasi yang akan memungkinkan pengguna anonim untuk mengakses database uji. Menariknya, saya diberitahu bahwa instalasi Percona Server menghapus baris-baris itu sebelum instalasinya selesai ( dba.stackexchange.com/questions/66584/… ). Karena Anda menggunakan MySQL, jalankan mysql_secure_installation atau hapus sendiri dua baris itu.