Aujourd'hui, j'ai exécuté apt-get upgrade
et une mise à niveau de MariaDB 10.1 ob Ubuntu Server 14.04 a échoué:
Setting up libmysqlclient18 (10.1.9+maria-1~trusty) ...
Setting up libmariadbclient18 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-client-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-core-10.1 (10.1.9+maria-1~trusty) ...
Setting up mariadb-server-10.1 (10.1.9+maria-1~trusty) ...
Installing new version of config file /etc/init.d/mysql ...
* Stopping MariaDB database server mysqld [ OK ]
* Starting MariaDB database server mysqld [fail]
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mariadb-server-10.1 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mariadb-server:
mariadb-server depends on mariadb-server-10.1 (= 10.1.9+maria-1~trusty); however:
Package mariadb-server-10.1 is not configured yet.
dpkg: error processing package mariadb-server (--configure):
dependency problems - leaving unconfigured
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mariadb-server-10.1
mariadb-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
C'est un cauchemar, je ne peux plus accéder à la base de données. J'ai essayé de le supprimer, de le purger et de l'installer à nouveau, mais il se termine toujours par la même erreur.
Selon /var/log/syslog
, cela a quelque chose à voir avec les sockets et mysqld (après avoir exécuté service mysql restart
):
mysqld: 151127 11:51:07 [ERROR] mysqld got signal 11 ;
...
mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
/etc/init.d/mysql[14132]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
/etc/init.d/mysql[14132]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
/etc/init.d/mysql[14132]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")'
/etc/init.d/mysql[14132]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Eh bien, /var/run/mysqld/mysqld.sock
existe absolument. De plus, je ne suis pas sûr de savoir pourquoi cela dit quelque chose sur l'utilisation de /etc/mysql/debian.cnf
- mon fichier de configuration mysql principal devrait en fait être /etc/mysql/my.cnf
, non? Je suis vraiment à court d'idées, toutes les nouvelles seraient appréciées!
Je ne pouvais toujours pas comprendre le problème et la mise à niveau ne fonctionnait toujours pas, donnant toujours la même erreur. Comme le disent certaines des réponses (maintenant supprimées), la seule solution consistait à revenir à un instantané plus ancien du serveur. Heureusement, sauvegarder la base de données était aussi simple que de tout copier de /var/lib/mysql
vers un autre instantané.
J'espère qu'il existe ou qu'il y aura une solution à ce problème, car je n'ai rien trouvé qui puisse fonctionner sur Google.
Voici comment j'ai résolu mon problème, je n'avais pas de sauvegarde du serveur, alors j'ai en quelque sorte "réinitialisé" MariaDB:
Tout d’abord, j’ai sauvegardé mon dossier /var/lib/mysql
: je suppose que j’ai un dossier /home/ubuntu
et que je le copie.
cp -r /var/lib/mysql /home/ubuntu/
Deuxièmement, j'ai sauvegardé mon dossier /etc/mysql
: je suppose que j'ai un dossier /home/ubuntu
et que je le copie.
mkdir /home/ubuntu/etc_mysql
cp -r /etc/mysql /home/ubuntu/etc_mysql
Puis j'ai supprimé les dossiers /var/lib/mysql
et /etc/mysql
rm -rf /etc/mysql
rm -rf /var/lib/mysql
Après cela, j'ai purgé MariaDB:
apt-get purge mariadb-server mariadb-* mysql-*
apt-get autoremove
Après la purge, j'ai réinstallé mariadb-server
et je l'ai reconfiguré:
apt-get install mariadb-server
mysql_secure_installation
Copiez la configuration souhaitée dans le dossier /home/ubuntu/etc_mysql
.
Après cela, j'ai créé ma base de données et mon utilisateur à partir de mysql
cli (ou comme vous le souhaitez).
Enfin, j'ai copié mon dossier /home/ubuntu/mysql/**databaseName**
dans /var/lib/mysql/**databaseName**
cp -r /home/ubuntu/mysql/databaseName /var/lib/mysql/
Et puis, je pouvais accéder à mes données sans perte, exactement comme je l'avais laissée.