Pengguna MySQL mana yang diperlukan?

13

Server MySQL saya memiliki sejumlah pengguna aneh yang tidak saya tambahkan. Apakah semua ini perlu?

'root'@'127.0.0.1'
'root'@'localhost'
'root'@'SERVERNAME'
'root'@'::1'
''@'SERVERNAME'
''@'LOCALHOST'

Jika saya menghapus semua root kecuali root @ localhost, bisakah saya akhirnya mengunci diri saya sendiri dari database? Dan apa tujuan dari nama pengguna yang kosong? Mereka sepertinya hanya memiliki 'PENGGUNAAN GRANT' ??

Apakah ada perbedaan antara 127.0.0.1 sebagai tuan rumah dan localhost? Jika saya hanya memiliki localhost dan bukan 127.0.0.1, apakah itu berarti mysqlclient yang menggunakan TCP / IP bukan soket Unix tidak akan dapat terhubung?

Myforwik
sumber

Jawaban:

16
  1. Pengguna ini tampaknya menjadi pengguna default yang ditambahkan ketika MySQL diinstal. Disarankan agar Anda menjalankan mysql_secure_installation setelah menginstal MySQL.

  2. Nama pengguna kosong ('' @ 'SERVERNAME') mewakili pengguna anonim. Jika Anda tidak menjalankan mysql_secure_installationatau mengatur kata sandi, maka siapa pun dapat memperoleh akses. Jika pengguna anonim memiliki GRANT USAGEhak istimewa, maka pada dasarnya itu berarti ia tidak memiliki hak istimewa, tetapi itu masih merupakan ide yang baik untuk menghapus login anonim sepenuhnya.

  3. Tidak, tidak ada perbedaan besar antara localhost dan 127.0.0.1. Apa pun alamat IP yang dicoba digunakan pengguna untuk masuk harus sesuai dengan @[IP Address]bagian nama pengguna. Jika Anda masuk dari mesin yang sama dengan server MySQL aktif, maka @localhostdan @127.0.0.1akan cocok. Seperti IVlint67 tunjukkan, dalam beberapa instalasi @localhosttidak akan berfungsi sehingga lebih baik untuk digunakan @127.0.0.1.

ub3rst4r
sumber
13

Saya biasanya menginstal dengan skrip mysql_secure_installation MySQL sedang dikirim dengan sekarang ...


[email protected] adalah alamat @ IP. root @ localhost adalah @ hostname. Ditto untuk nama server. Dan root terakhir adalah alamat @ IPv6 untuk localhost.


Dari situs MySQL:

Upaya untuk terhubung ke host 127.0.0.1 biasanya diselesaikan ke akun localhost. Namun, ini gagal jika server dijalankan dengan opsi --skip-name-resol, sehingga akun 127.0.0.1 berguna dalam kasus itu.

Nama pengguna yang kosong:

Beberapa akun untuk pengguna anonim. Ini memiliki nama pengguna kosong. Akun anonim tidak memiliki kata sandi, jadi siapa pun dapat menggunakannya untuk terhubung ke server MySQL

http://dev.mysql.com/doc/refman/5.0/id/default-privileges.html


Dan akhirnya:

Jika saya menghapus semua root kecuali root @ localhost, bisakah saya akhirnya mengunci diri saya sendiri dari database?

Ya, tetapi Anda bisa kembali

Lihat --skip-grant-tables: https://help.ubuntu.com/community/MysqlPasswordReset

Haruskah saya?

Saya tidak peduli, ini server Anda. Jika itu milik saya, saya akan mengamankan akun root seperti halnya dengan kata sandi dan menghapus akun anonim kecuali Anda membutuhkannya.

Daniel Widrick
sumber