My computer froze and I forgot it was updating in the background so I restarted it. When I rebooted I tried to login (and if I entered the wrong password it said incorrect password), but then the screen would go blank for a second and then return to the login screen. I booted into recovery mode and ran the package recovery manager. That did the trick and allowed me to log back in. I ran
sudo apt-get update and
sudo apt-get install to make sure all packages were updated correctly. However, mysql is no longer working (I cannot turn the service on). When I try
sudo apt-get install here is the error message:
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)
I also tried
sudo apt-get -f install but got the same error message. My question is how do I fix the problem and get the database working again, with an abundance of caution to make sure that the the actual mysql databases/tables do not get deleted.
Following this answer I removed mysql and reinstalled.
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
The final step did not work (it installed, but at the end of installation it said root password was already set and database would not start). Instead of doing the final step in the terminal, I had webmin install mysql (which is how I originally set up the database) and the database would start and stop no problem. Except my database directory location is on a second hard drive at
/media/D/mysql/, not at
/var/lib/mysql and what was working was only a much older set of files that never got deleted from
/var/lib/mysql when I copied them to the second hard drive.
Following these instructions, which I originally used to change the directory, I edited the relevant configuration files (obviously I did not copy the files over to the D drive as they're already there, I just edited the configuration files). After I change the database directory location the database will no longer start.
Here is what's in the error log (terminal just tells you it can't start):
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
I researched the error
Table 'mysql.host' doesn't exist and found this answer, I tried to make sure mysql had permissions (see below), but that did not work.
chown -R mysql /media/D/mysql chgrp -R mysql /media/D/mysql
One suggestion was to see the output of
mysqld, it yields the following error in the terminal:
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
I changed the mysql configuration /etc/mysql/my.cnf and it uses key_buffer_size correctly now and
mysqld will start no problem.
sudo mysql start , however, yields the following error:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
So stupid! Actual location of the files is /media/D_/mysql not /media/D/mysql. And then when I figured that out I also had to remember to make the change in the AppArmor profile as well. It would be so much easier if the error message said the directory does not exist!!!!