sudo apt-get update
и sudo apt-get install
, чтобы убедиться, что все пакеты были обновлены правильно. Тем не менее, MySQL больше не работает (я не могу включить службу). Когда я пытаюсь sudo apt-get install
, вот сообщение об ошибке:
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up mysql-server-5.5 (5.5.43-0ubuntu0.14.04.1) ...
start: Job failed to start
invoke-rc.d: initscript mysql, action "start" failed.
No apport report written because the error message indicates its a followup error from a previous failure.
dpkg: error processing package mysql-server-5.5 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.5; however:
Package mysql-server-5.5 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
mysql-server-5.5
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Я также пытался sudo apt-get -f install
, но получил то же самое сообщение об ошибке. Мой вопрос заключается в том, как мне исправить проблему и заставить базу данных снова работать, с большой осторожностью, чтобы убедиться, что фактические базы данных / таблицы mysql не будут удалены.
Обновление
После этого ответа я удалил mysql и переустановил.
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get remove --purge mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5
sudo apt-get install mysql-server
Последний шаг не сработал (он установлен, но в конце установки он сказал, что пароль root уже установлен и база данных не запустится). Вместо того, чтобы сделать последний шаг в терминале, я попросил webmin установить mysql (как я изначально настраивал базу данных), и база данных запускалась и останавливалась без проблем. За исключением того, что каталог моей базы данных находится на втором жестком диске в /media/D/mysql/
, а не в /var/lib/mysql
, и работал только гораздо более старый набор файлов, который никогда не удалялся из /var/lib/mysql
, когда я копировал их на второй жесткий диск. .
Следуя этим инструкциям , которые я изначально использовал для изменения каталога, я отредактировал соответствующие файлы конфигурации (очевидно, я не копировал файлы на диск D, поскольку они уже есть, я просто отредактировал файлы конфигурации). После того, как я изменил расположение каталога базы данных, база данных больше не будет запускаться.
Вот что в журнале ошибок (терминал просто говорит, что не может запуститься):
50514 16:50:55 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
150514 16:50:55 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
150514 16:50:55 InnoDB: The InnoDB memory heap is disabled
150514 16:50:55 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150514 16:50:55 InnoDB: Compressed tables use zlib 1.2.8
150514 16:50:55 InnoDB: Using Linux native AIO
150514 16:50:55 InnoDB: Initializing buffer pool, size = 128.0M
150514 16:50:55 InnoDB: Completed initialization of buffer pool
150514 16:50:55 InnoDB: highest supported file format is Barracuda.
150514 16:50:55 InnoDB: Waiting for the background threads to start
150514 16:50:56 InnoDB: 5.5.43 started; log sequence number 1595675
150514 16:50:56 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
150514 16:50:56 [Note] - '127.0.0.1' resolves to '127.0.0.1';
150514 16:50:56 [Note] Server socket created on IP: '127.0.0.1'.
150514 16:50:56 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
Я исследовал ошибку Table 'mysql.host' doesn't exist
и нашел этот ответ , я пытался убедиться, что у mysql есть разрешения (см. ниже), но это не сработало.
chown -R mysql /media/D/mysql
chgrp -R mysql /media/D/mysql
Одним из предложений было посмотреть вывод mysqld
, он выдает следующую ошибку в терминале:
150514 17:00:55 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
150514 17:00:55 [Note] mysqld (mysqld 5.5.43-0ubuntu0.14.04.1) starting as process 11565 ...
150514 17:00:55 [Warning] Can't create test file /media/D/mysql/computername.lower-test
150514 17:00:55 [Warning] Can't create test file /media/D/mysql/computername.lower-test
mysqld: Can't change dir to '/media/D/mysql/' (Errcode: 13)
150514 17:00:55 [ERROR] Aborting
150514 17:00:55 [Note] mysqld: Shutdown complete
Обновление 2
Я изменил конфигурацию mysql /etc/mysql/my.cnf, и теперь она правильно использует key_buffer_size, и mysqld
не запустится без проблем. Однако sudo mysql start
выдает следующую ошибку:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
РЕШЕНО
Так глупо! Фактическое расположение файлов: / media / D_ / mysql, а не / media / D / mysql. А потом, когда я понял это, я также должен был помнить, чтобы внести изменения в профиль AppArmor. Было бы намного проще, если бы в сообщении об ошибке говорилось, что каталог не существует !!!!
Удостоверьтесь Ваш my.cnf
, не имеет никаких опций, которые были удержаны от использования. У меня была подобная проблема, потому что я имел default-character-set
перечисленный под [mysqld]
, но в более новой версии mysql это было переименовано к character_set_server
. Однако mysql, очень бесполезно сообщенный мне этого путем простого зависания при попытке запустить сервис. И диспетчер пакетов будет обычно пытаться остановить и/или запустить сервис при установке новой версии.
Для проверки попытайтесь работать mysqld
отдельно. Если существуют проблемы конфигурации, это должно сказать так и сразу умереть.