Обновление MySQL с 4.1.* до 5.0 Using a Binary Distribution
Не все так просто и понятно, как написано в документации.
После попытки перезапуска сервера он в /usr/local/mysql/data/hostname.err пишет:
060221 16:06:39 [ERROR] Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist
060221 16:06:39 mysqld ended
Выпрямляем руки:
Для начала убедитесь, что вы не забыли перенести данные из
mysql-xx-old.version-linux-i686/data
в
mysql-xx-new.version-linux-i686/data
и что симлинк (тот, про который в INSTALL-BINARY сказано) указывает туда, куда надо.
cd /usr/local/mysql/bin
./mysqld_safe –user=mysql –skip-grant-tables &
в другой консоли говорим перед этим
tail -f /usr/local/mysql/data/hostname.err
и наблюдаем нечто типа
060221 17:26:26 [Warning] Can’t open and lock time zone table: Table ‘mysql.time_zone_leap_second’ doesn’t exist trying to live without them
060221 17:26:26 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.0.18-standard’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Edition - Standard (GPL)
Соответственно, в процессах mysqld тоже есть. Из /usr/local/mysql/bin запускаем:
./mysql_fix_privilege_tables
Рез-т:
This script updates all the mysql privilege tables to be usable by
MySQL 4.0 and above.
This is needed if you want to use the new GRANT functions,
CREATE AGGREGATE FUNCTION, stored procedures, or
more secure passwords in 4.1
done
В документации написано еще
./mysqlcheck –check-upgrade –all-databases –auto-repair
но –check-upgrade ему почему-то упрорно не нравится. В принципе, и без него проверку запустить тоже не помешает. Имхо.
После этого останавливаем службу, и запускаем уже нормально, через /etc/init.d/mysql или что там у вас.
February 22nd, 2006 at 8:53
А зачем данные куда-то переносить или символические ссылки ставить? Можно же просто конфигурационный файл подправить на предмет datadir.
February 22nd, 2006 at 8:59
Можно:)
Скажем так: эта процедура рекомендована мануалом, и мне хватило заморочки с неуказаным ключем (–skip-grant-tables) хватило, так что я просто не копал глубоко. Возможно, твой вариант лучше.