Назад | Перейти на главную страницу

Вопрос: Миграция базы данных MySQL с сервера (A) на сервер (B), какие таблицы?

При переносе базы данных 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 разработан специально для этой работы.