Mam następujące granty dla użytkownika / bazy danych
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' |
+---------------------------------------------------------------------------+
Aby włączyć zewnętrzny dostęp do bazy danych, muszę zmienić localhost na %
. Jednym ze sposobów, aby to zrobić, są REVOKE
wszystkie uprawnienia i ustawić je ponownie. Problem polega na tym, że istnieje zestaw haseł, którego nie znam, więc jeśli cofnę pozwolenie, nie mogę go przywrócić.
Czy istnieje sposób na zmianę nazwy hosta localhost
na %
(iz powrotem) bez cofania samego pozwolenia?
mysql
.user
SETHost
= „localhost” GDZIEuser
.Host
= „%” ORAZuser
.User
= „XXXdbusr”;Najlepsza odpowiedź na Stackoverflow sugerująca użycie,
RENAME USER
która kopiuje uprawnienia użytkownika.Używanie języka kontroli danych (instrukcje GRANT, REVOKE, RENAME itd.) Nie wymaga
FLUSH PRIVILEGES;
i jest wymagane w architekturze takiej jak Galera lub replikacja grupy, w której tabele MyISAM nie są replikowane.źródło
Natknąłem się również na to, a proponowane rozwiązanie nie zadziałało, ponieważ specyficzne dla bazy danych uprawnienia również nie zostałyby przeniesione. co ja zrobiłem:
źródło
Aby zmienić uprawnienia, najpierw cofnij wszystkie uprawnienia dla użytkownika
źródło
Brakuje wielu tabel, jeśli masz uprawnienia inne niż tylko db (takie jak tabele lub kolumny itp.). W zależności od tego, co udziela użytkownik, może być konieczne zaktualizowanie wszystkich tych tabel lub niektórych:
źródło