При переносе базы данных MySQL с сервера (A) на сервер (B), какие таблицы следует выгружать и переносить на сервер (B), включая пользовательские права? Я не хочу вручную повторно вводить учетные записи пользователей и пароли. Я хочу сделать это с помощью стороннего приложения, например Navicat, без использования mysqldump. Насколько я понимаю, следующие таблицы содержат данные учетной записи пользователя (гранта):
mysql> db
mysql> пользователь
Однако я читал, что mysql таблицу не нужно переносить с сервера (A) на сервер (B), а также information_scheme стол. Но, если таблица mysql не нуждается в переносе, если этот комментарий не является неправильным, как мне перенести информацию о моих правах пользователя с хостами, именами пользователей, паролями и т. Д.
#!/bin/bash
# adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
( mysql -pPASSWORD --batch --skip-column-names -e "SELECT user, host FROM user" mysql
) | while read user host
do
echo "# $user @ $host"
mysql -pPASSWORD --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
done
Этот сценарий «сбрасывает» все разрешения пользователей и их хешированные пароли. У меня были смешанные результаты от импорта дампов баз данных mysql и information_schema.
Я бы просто сделал mysqldump базы данных, а затем вручную отразил бы разрешения для пользователей базы данных. Это будет проще и проще, чем пытаться выяснить способ экспорта (при условии, что это осуществимо и надежно) доступа и паролей пользователей.
Вам необходимо перенести базы данных, а не только таблицы. Информация, которую вы получили, несколько неверна, так как база данных mysql - это та, которую вам действительно нужно перенести. Это тот, который содержит всю вашу информацию о безопасности и избавит от необходимости вручную восстанавливать эти данные. Однако information_schema - это виртуальная база данных, которая создается каждый раз при запуске MySQL, поэтому возиться с этим бессмысленно.
Я предлагаю вам использовать mysqldump, а не Navicat, который ненадежен и иногда может давать действительно странные и неполные результаты, тогда как mysqldump разработан специально для этой работы.