Saat membuat tabel baru dan pengguna untuk pergi bersama dengan itu, biasanya saya hanya menjalankan perintah berikut:
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY "mypassword";
Saya tidak pernah diperlukan untuk memanfaatkan FLUSH PRIVILEGES
perintah setelah mengeluarkan dua perintah sebelumnya. Pengguna dapat log in dan menggunakan database mereka dan menjalankan script-script PHP yang terhubung ke database baik-baik saja. Namun saya melihat perintah ini digunakan di hampir setiap tutorial yang saya lihat.
Kapan FLUSH PRIVILEGES
perintah benar-benar dibutuhkan dan ketika itu tidak perlu?
Hak-hak istimewa yang diberikan melalui HIBAH opsi tidak perlu FLUSH PRIVILEGES untuk mengambil efek - MySQL server akan melihat perubahan ini dan reload tabel hibah langsung.
Jika anda memodifikasi tabel hibah langsung menggunakan pernyataan seperti INSERT, UPDATE, atau DELETE, perubahan tidak berpengaruh pada hak istimewa memeriksa sampai anda me-restart server atau memberitahu untuk reload tabel. Jika anda mengubah tabel hibah langsung tapi lupa untuk reload mereka, perubahan tidak berpengaruh sampai anda me-restart server. Ini mungkin membuat anda bertanya-tanya mengapa perubahan tampaknya tidak membuat perbedaan!
untuk memberitahu server Untuk reload tabel hibah, melakukan flush privileges operasi. Hal ini dapat dilakukan dengan mengeluarkan FLUSH HAK pernyataan atau dengan mengeksekusi mysqladmin flush-hak atau mysqladmin reload perintah.
Jika anda memodifikasi tabel hibah secara tidak langsung menggunakan rekening-manajemen pernyataan seperti GRANT, REVOKE, MENGATUR SANDI, atau MENGUBAH nama PENGGUNA, server pemberitahuan perubahan ini dan beban hibah tabel ke dalam memori lagi segera.
TL;DR
Anda harus menggunakan FLUSH PRIVILEGES;
hanya jika anda memodifikasi tabel hibah langsung menggunakan pernyataan seperti INSERT
, UPDATE
, atau DELETE
.
Hanya untuk memberikan beberapa contoh. Let's mengatakan anda mengubah password untuk user bernama 'alex'. Anda dapat mengubah password ini dalam beberapa cara. Misalnya:
mysql> update* user set password=PASSWORD('test!23') where user='alex';
mysql> flush privileges;
Di sini anda menggunakan UPDATE. Jika anda menggunakan INSERT, UPDATE atau DELETE pada hibah tabel ini diatas anda perlu menggunakan FLUSH PRIVILEGES dalam rangka untuk reload tabel hibah.
Atau anda bisa mengubah password seperti ini:
mysql> set password for 'alex'@'localhost'= password('test!24');
Berikut ini's tidak maka perlu untuk menggunakan "FLUSH PRIVILEGES;" Jika anda memodifikasi tabel hibah secara tidak langsung menggunakan rekening-manajemen pernyataan seperti GRANT, REVOKE, MENGATUR SANDI, atau MENGUBAH nama PENGGUNA, server pemberitahuan perubahan ini dan beban hibah tabel ke memori lagi segera.
2 poin selain dari semua jawaban yang baik:
1:
apa Grant Tables?
MySQL database sistem meliputi beberapa hibah tabel yang berisi informasi tentang akun pengguna dan hak istimewa yang dimiliki oleh mereka.
klarifikasi: di MySQL, ada beberapa built-in database , salah satunya adalah "mysql" , semua tabel pada "mysql" database telah disebut sebagai hibah tabel
2:
perhatikan bahwa jika anda melakukan:
UPDATE a_grant_table SET password=PASSWORD('1234') WHERE test_col = 'test_val';
dan refresh phpMyAdmin , anda'll menyadari bahwa kata sandi anda telah diubah pada meja itu, tapi bahkan sekarang jika anda melakukan:
mysql -u someuser -p
akses anda akan ditolak oleh password baru anda sampai anda melakukan :
FLUSH PRIVILEGES;