J'effectue une mise à niveau de MySQL 5.1 à la version 5.5, mysql_upgrade
et exécute cette sortie:
# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
Des idées sur où chercher ce qui se passe (ou ne pas se passer?) Afin que je puisse réparer ce qui ne va pas et courir mysql_upgrade
?
Merci!
Plus de sortie:
# mysql_upgrade --verbose
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
# mysql_upgrade --debug-check --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
# mysql_upgrade --debug-info
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
User time 0.00, System time 0.00
Maximum resident set size 1260, Integral resident set size 0
Non-physical pagefaults 447, Physical pagefaults 0, Swaps 0
Blocks in 0 out 16, Messages in 0 out 0, Signals 0
Voluntary context switches 9, Involuntary context switches 5
# mysql_upgrade --debug-check
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed
Après la fermeture mysqld --skip-grant-tables
via mysqladmin shutdown
et le redémarrage de MySQL via service mysql start
les boucles journal des erreurs dans cette série d'erreurs encore et:
130730 21:03:27 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
130730 21:03:27 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130730 21:03:27 InnoDB: The InnoDB memory heap is disabled
130730 21:03:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:03:27 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:03:27 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:03:29 InnoDB: Completed initialization of buffer pool
130730 21:03:30 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 588190222435
130730 21:03:30 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 588192055067
130730 21:03:30 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file position 0 81298895, file name /var/log/mysql/mysql-bin.006008
130730 21:03:33 InnoDB: Waiting for the background threads to start
130730 21:03:34 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:03:34 [Note] Recovering after a crash using /var/log/mysql/mysql-bin
130730 21:03:34 [Note] Starting crash recovery...
130730 21:03:34 [Note] Crash recovery finished.
130730 21:03:34 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:03:34 [Note] - '0.0.0.0' resolves to '0.0.0.0';
130730 21:03:34 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:03:34 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
Journal MySQL au démarrage via mysqld_safe --skip-grant-tables
130730 21:19:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130730 21:19:36 [Note] Plugin 'FEDERATED' is disabled.
130730 21:19:36 InnoDB: The InnoDB memory heap is disabled
130730 21:19:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130730 21:19:36 InnoDB: Compressed tables use zlib 1.2.3.4
130730 21:19:37 InnoDB: Initializing buffer pool, size = 20.0G
130730 21:19:39 InnoDB: Completed initialization of buffer pool
130730 21:19:39 InnoDB: highest supported file format is Barracuda.
130730 21:19:42 InnoDB: Warning: allocated tablespace 566, old maximum was 0
130730 21:19:42 InnoDB: Waiting for the background threads to start
130730 21:19:43 InnoDB: 5.5.32 started; log sequence number 588192055067
130730 21:19:43 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130730 21:19:43 [Note] - '0.0.0.0' resolves to '0.0.0.0';
130730 21:19:43 [Note] Server socket created on IP: '0.0.0.0'.
130730 21:19:43 [Warning] Can't open and lock time zone table: Table 'mysql.time_zone_leap_second' doesn't exist trying to live without them
130730 21:19:43 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_consumers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_instruments' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'setup_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'performance_timers' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'threads' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'events_waits_summary_global_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_event_name' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_summary_by_instance' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'mutex_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'rwlock_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
130730 21:19:43 [ERROR] Native table 'performance_schema'.'file_instances' has the wrong structure
130730 21:19:43 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.32-0ubuntu0.12.04.1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
Si je comprends bien, tous les problèmes de structure / existence de table (en ce qui concerne les tables système mysql) devraient être corrigés en lançant mysql_upgrade
:
mysqld
est en cours d'exécution, avec--skip-grant-tables
option. Je peux me connecter viamysql
le terminal sans informations d'identification, et je ne reçois aucune erreur via syslog ou ailleurs, je peux penser à regarder quand je coursmysql_upgrade
Réponses:
Je pense qu'il faut un nom d'utilisateur et un mot de passe
Si je ne les passe pas, j'obtiens votre erreur
Edit : grâce aux commentaires, je sais maintenant qu’il existe d’autres raisons, peut-être moins fréquentes, mais il vaut mieux les connaître aussi
Donc, vous obtenez cette erreur quand
mysqld --skip-grant-table
)la source
Je viens de rencontrer ces symptômes précis lors de la mise à niveau de la version 5.5 à la version 5.6 et il s’est avéré qu’il s’agissait d’un problème d’accessibilité au service.
Même si le client cli MySQL pouvait se connecter à mon instance de base de données locale avec uniquement les options -u et -p fournies, je devais également spécifier -h 127.0.0.1 pour mysql_upgrade car il tentait une connexion de fichier de socket et échouait lamentablement dans cette tentative.
la source
Cela semble être un serveur Plesk. Lorsque Plesk est utilisé, il n’existe aucune racine pour Mysql, mais l’administrateur de Mysql a appelé admin. Cette commande devrait donc fonctionner sur Plesk, comme je l’avais déjà essayé:
la source
vous pouvez essayer de les exécuter un par un pour voir où cela échoue:
depuis http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html
la source
fix_priv_tables
est un script qui est généré parmysql_upgrade
afin de corriger les tables de privilèges/usr/bin/mysql_upgrade
Même problème! La solution pour moi est venue de http://www.freebsd.org/cgi/query-pr.cgi?pr=180624
En bref: l'erreur est trompeuse! exécuter
mysql_upgrade -u root -p
avec la base de données en ligne et fournir le mot de passe root.la source
Cette question est incroyablement générique, et je m'en excuse.
Je ne pouvais pas trouver une cause directe et une solution au problème que je rencontrais. J'ai donc réinstallé MySQL pour voir si cela fonctionnerait. Il s'avère que réinstaller a fait l'affaire. C’était une mauvaise façon de régler le problème, mais c’était la seule option qui me restait.
Beaucoup d'autres réponses à cette question sont des problèmes que j'ai dû résoudre pour que mysql_upgrade soit exécuté au départ, mais pour une raison quelconque - cela a échoué car il essayait d'exécuter des requêtes automatisées, et je ne trouvais pas la documentation sur laquelle requêtes qu'il courait afin que je puisse les réparer.
la source
Vous devez vérifier l'autorisation de tous les fichiers sous les données mysql. Il devrait être le même propriétaire de mysql PID (mysql ou _mysql). Cela se produit parfois parce que restaurer des données à partir d'un fichier sans la permission appropriée. Par exemple, si vos données mysql sont sous / var / lib / mysql
la source
Notre administrateur de base de données a désinstallé la version 5.0.95 de MySQL au lieu de simplement passer à la version 5.5.39. La désinstallation sauvegardée la
/etc/my.cnf
pour/etc/my.cnf.rpmsave
ensuite retiré, et cela a empêché MySQL de démarrer correctement:Vous pouvez effectuer l'une des opérations suivantes:
Comparez les fichiers my.cnf manuellement et indiquez les paramètres de configuration appropriés pour InnoDB.
Restaurez le
my.cnf.rpmsave
retour sur l'original (vérifiez d'abord si de nouveaux paramètres par défaut doivent être ajoutés!)Utilisez un outil de diff comme
vimdiff
pour comparer lesmy.cnf.rpmsave
au nouveaumy.cnf
et ramené sur les tweaks qui avaient été faites à configuration MySQL, y compris les paramètres InnoDB.[root]# vimdiff /etc/my.cnf /etc/my.cnf.rpmsave
J'ai fait la dernière option, puis j'ai pu démarrer MySQL:
et maintenant les
mysql_upgrade
fonctionne très bien, en utilisantmysql_upgrade -uroot -p
donc il m'a invité à entrer le mot de passe root.J'espère que cela t'aides!
et aussi utiliser a
mysql_upgrade -uroot -p
échoué car MySQL doit fonctionner!Leçons apprises:
la source
Même problème pour moi, mais la source de mes problèmes était l'ancien format de mot de passe. Bien que mysql puisse être obligé de se connecter en utilisant l'ancien format avec "skip-secure-auth", mysql_upgrade n'a pas cette option. Vous devez d’abord mettre à jour le mot de passe root avec le nouveau format, puis vous pourrez mettre à jour votre mysql.
la source
Avait le même problème de mise à niveau de 5.1 à 5.5.
Cela a fonctionné pour moi:
sudo mysql_upgrade -S <path-to-socket> -u <myuser> -p<mypass>
Mon erreur a probablement été causée par des autorisations sur le chemin d'accès au socket, mais je n'ai pas le temps de vérifier si c'est bien la cause.
la source
Je viens juste de le rencontrer également après la mise à niveau de mon système de Mint 12 à Mint 15. J'avais archivé / var / lib / mysql et je l'avais remis en place après la mise à niveau. J'ai couru le premier à
mysqlcheck
partir du commentaire de user16081, et il s'est plaint de mysql.sock.J'ai commencé à utiliser mysqld
/usr/sbin/mysqld &
et j'aimysql_upgrade
bien fonctionné.la source
SHOW TABLES
, mais sinon n'existent pas. J'essaie actuellement de faire fonctionner les utilitaires mysql, mais c'est pour me plaindre de l'absence de modules python.J'ai rencontré le même problème.
Je l'ai résolu en incluant le -S /path/to/mysql.sock
Dans mon cas particulier, la sortie de mysql_upgrade était:
Recherche de 'mysql' comme: mysql
Recherche de 'mysqlcheck' comme: mysqlcheck
FATAL ERROR: La mise à niveau a échoué.
C'est plutôt inutile. --verbose ne fait aucune différence.
En me
connectant, j'ai choisi la commande suivante et cela a fonctionné à merveille: mysql_upgrade -S /var/lib/mysql/mysql.sock -uUSERNAME -p
J'espère que ça aide.
la source
J'ai fait face à ce problème et j'ai découvert que
le service MySQL devait être en cours d'exécution
il fallait un nom d'utilisateur et un mot de passe
la source
J'ai rencontré le même problème.
J'ai résolu ce problème en installant une nouvelle base de données
mysql_install_db --user=mysql
comme décrit dans les commentaires de monrc.mysql
fichier dans / etc.Ensuite, j'ai pu démarrer le démon mysql et utiliser «mysql» ou ce que vous voulez connecter avec le paquet mysql.
J'ai eu ce problème sur le bras slackware, mais supposons que ce ne soit pas grave dans ce cas.
la source
Dans mon cas, quelques versions de mysqld s'exécutant localement ont provoqué l'échec de mysql_upgrade avec Erreur: Echec lors de la récupération de la version du serveur! Peut être dû à un accès non autorisé.
ps aux | grep mysql
et assurez-vous que mysqld est tout éteint. Ensuite, désinstallez toutes les versions, réinstallez la bonne version. Et après cela, mysql_upgrade a commencé à fonctionner.la source
essayer
ou peut-être même (ou les deux)
la source
130730 21:03:34 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
je pense que c’est ce qui fait que tout échoue.mysql_upgrade --version
ne produit pas de version (uniquement l'erreur FATAL ERROR).mysql --version
mysql Ver 14.14 Distrib 5.5.32, pour debian-linux-gnu (x86_64) utilisant readline 6.2, et la version de mysqld est 5.5L'utilisateur root de MySQL s'appelle "admin", pas root. La bonne commande est
la source
root
.