Saya memiliki hibah berikut untuk pengguna / basis data
mysql> SHOW GRANTS FOR 'username'@'localhost';
+---------------------------------------------------------------------------+
| Grants for username@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'xxx' |
| GRANT ALL PRIVILEGES ON `userdb`.* TO 'username'@'localhost' |
+---------------------------------------------------------------------------+
Untuk mengaktifkan akses eksternal ke database, saya perlu mengubah localhost menjadi %
. Salah satu cara untuk melakukan ini adalah REVOKE
semua izin dan atur kembali. Masalahnya adalah, ada set kata sandi yang saya tidak tahu, jadi jika saya mencabut izinnya, saya tidak bisa mengaturnya kembali.
Apakah ada cara untuk mengubah nama host localhost
menjadi %
(dan kembali lagi) tanpa mencabut izin itu sendiri?
mysql
.user
SETHost
= 'localhost' DI MANAuser
.Host
= '%' DANuser
.User
= 'XXXdbusr';Jawaban terbaik pada Stackoverflow menyarankan untuk menggunakan
RENAME USER
yang menyalin hak pengguna.Menggunakan Bahasa Kontrol Data (pernyataan sebagai GRANT, REVOKE, RENAME, dan sebagainya) tidak memerlukan
FLUSH PRIVILEGES;
dan diperlukan dalam arsitektur seperti Galera atau Replikasi Grup di mana tabel MyISAM tidak direplikasi.sumber
Saya menemukan yang satu ini juga, dan solusi yang diusulkan tidak bekerja, karena hak istimewa basis data tidak akan dipindahkan juga. apa yang saya lakukan:
sumber
Untuk mengubah hak istimewa, pertama-tama batalkan semua izin untuk pengguna
sumber
Kehilangan banyak tabel jika Anda memiliki hak istimewa selain hanya db (seperti tabel atau kolom dll). Bergantung pada hibah apa yang dimiliki pengguna Anda, Anda mungkin perlu memperbarui semua tabel ini atau beberapa:
sumber