it-swarm.asia

tidak dapat menghapus "GRANT USAGE"

Saya sedang menguji beberapa hal, dan menambahkan:

grant usage on statistics.* to [email protected] identified by 'password';

jadi sekarang ketika saya melakukannya

show grants for [email protected];

Saya dapat melihat bahwa salah satunya adalah:

Grants for [email protected]
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Sekarang saya ingin menghapusnya karena saya pikir ini adalah bahaya keamanan, jadi saya lakukan:

REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Tetapi masih menunjukkan bahwa USAGE memberikan dalam daftar hibah.

Grants for [email protected]
----------------------------------
GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 

Ada ide mengapa? Apa yang saya lakukan salah?

15
Katafalkas

Di bawah tenda, ketika Anda melihat pengguna dengan USAGE saja, bahwa pengguna ditulis dalam tabel mysql.user dengan semua hak global dimatikan.

Anda awalnya menyatakan bahwa pengguna memiliki ini:

grant usage on statistics.* to [email protected] identified by 'password'; 

Anda seharusnya melihat baris dalam mysql.user dengan kata sandi MD5 dan semua privals global diset ke N. Anda juga harus melihat baris di mysql.db dengan

  • user = 'cptnotsoawesome'
  • Host = 'localhost'
  • db = 'statistik'
  • semua tingkat privat DB diatur ke 'Y'

Anda harus dapat melihatnya dengan kueri ini

SELECT * FROM mysql.db
WHERE user='cptnotsoawesome'
AND Host='localhost'
AND db='statistics'\G

Ketika Anda menjalankan perintah REVOKE, Anda cukup menghapus baris dari mysql.db. Ini tidak menyentuh baris dalam mysql.user. Dengan demikian, Anda masih bisa masuk ke mysql dan hanya memiliki priv untuk dijalankan

SHOW GLOBAL VARIABLES;
SHOW GLOBAL STATUS;

Jika ada database pengujian yang disebut test atau database yang 5 karakter pertamanya adalah test_, (cari menggunakan SELECT * FROM mysql.db WHERE db LIKE 'test%';) maka pengguna yang hanya menggunakan USAGE dapat memiliki hak penuh untuk database pengujian. saya menulis tentang ini di ServerFault Sep 2011 .

Jika Anda ingin menghapus baris dari mysql.user Anda bisa menjalankannya

DROP USER [email protected];

atau

DELETE FROM mysql.user WHERE
WHERE user='cptnotsoawesome'
AND Host='localhost';
FLUSH PRIVILEGES;
20
RolandoMySQLDBA

[~ # ~] penggunaan [~ # ~] berarti bahwa pengguna tidak memiliki hak istimewa apa pun.

You have to use 'DROP USER'. 

drop user [email protected];

Anda tidak dapat benar-benar mencabut PENGGUNAAN, tanpa menjatuhkan pengguna. PENGGUNAAN adalah hak istimewa tingkat global.

lihat Tautan Ini .

9
Abdul Manaf

Silakan lihat pertanyaan ini: -

https://stackoverflow.com/questions/2126225/why-is-a-grant-usage-created-the-first-time-i-grant-a-user-privileges

Pada dasarnya hak istimewa USAGE bertindak seperti hak istimewa tingkat sistem yang tidak dapat Anda hapus. Ini digunakan secara internal oleh MySQL sehingga Anda dapat memanipulasi sistem privilege.

2
Kiri