У меня есть следующие гранты для пользователя / базы данных
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' |
+---------------------------------------------------------------------------+
Чтобы включить внешний доступ к базе данных, мне нужно изменить localhost на %
. Один из способов сделать это - REVOKE
все разрешения и установить их заново. Проблема в том, что есть набор паролей, который я не знаю, поэтому, если я отзову разрешение, я не смогу восстановить его.
Есть ли способ , чтобы изменить имя хоста localhost
к %
(и обратно) без отмены самого разрешения?
mysql
.user
SETHost
= 'localhost' ГДЕuser
.Host
= '%' ANDuser
.User
= 'XXXdbusr';Лучший ответ на Stackoverflow, предлагающий использовать,
RENAME USER
какие копии пользовательских привилегий.Использование языка управления данными (операторы GRANT, REVOKE, RENAME и т. Д.) Не требуется
FLUSH PRIVILEGES;
и требуется в архитектуре, такой как Galera или Group Replication, где таблицы MyISAM не реплицируются.источник
Я тоже наткнулся на это, и предлагаемое решение не сработало, поскольку особые привилегии для базы данных также не были бы перенесены. что я сделал:
источник
Чтобы изменить привилегии, сначала отмените все разрешения для пользователя
источник
Отсутствует много таблиц, если у вас есть права, отличные от просто db (например, таблицы или столбцы и т. Д.). В зависимости от того, какие гранты имеет ваш пользователь, вам может потребоваться обновить все эти таблицы или некоторые из них:
источник