Ubuntu does not provide an apt-get repository package for MySQL 5.5 on this older OS, however this is still a widely used long term support version. The following steps will upgrade an existing MySQL 5.1 apt-get version to a standard MySQL 5.5 binary.
Step 1. Remove existing MySQL 5.1 retaining data and configuration
sudo su - service mysql stop cp -r /etc/mysql /etc/mysql.51 cp -r /var/lib/mysql /var/lib/mysql.51 which mysqld dpkg -P mysql-server mysql-server-5.1 mysql-server-core-5.1 which mysqld which mysql dpkg -P mysql-client-5.1 mysql-client-core-5.1 which mysql dpkg -P libdbd-mysql-perl libmysqlclient16 mysql-common # This will not remove /etc/mysql if any other files are in the directory dpkg -l | grep mysql [ -d /etc/mysql ] && mv /etc/mysql /etc/mysql.uninstall cp -r /etc/mysql.51 /etc/mysql
2. Prepare configuration and required directories.
sudo su - MYCNF="/etc/mysql/my.cnf" grep basedir ${MYCNF} sed -ie "s/^basedir.*$/basedir=/opt/mysql/" ${MYCNF} grep basedir ${MYCNF} sed -ie "/^[mysqld_safe]/a skip-syslog" ${MYCNF} chown -R mysql:mysql /var/lib/mysql mkdir -p /var/run/mysqld sudo chown mysql:mysql /var/run/mysqld
Install MySQL 5.5
sudo su - mkdir -p /opt cd /opt # Install MySQL 5.5 Binaries apt-get install -y libaio-dev # New 5.5 dependency wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.28-linux2.6-x86_64.tar.gz tar xvfz mysql*.tar.gz ln -s mysql-5.5.28-linux2.6-x86_64 /opt/mysql echo "export MYSQL_HOME=/opt/mysql export PATH=$MYSQL_HOME/bin:$PATH" > /etc/profile.d/mysql.sh chmod +x /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh echo $MYSQL_HOME echo $PATH which mysql
4. Upgrade and verify MySQL Instance
su - mysql cd $MYSQL_HOME bin/mysqld_safe --skip-syslog & tail /var/log/mysql/error.log # There will be some expected ERRORS in error log bin/mysql_upgrade -uroot bin/mysqladmin -uroot shutdown bin/mysqld_safe --skip-syslog & tail -100 /var/log/mysql/error.log mysql -uroot -e "SELECT VERSION();" bin/mysqladmin -uroot shutdown exit
5. Setup MySQL for system use
# As Root sudo su - INIT="/etc/init.d/mysqld" cp /opt/mysql/support-files/mysql.server ${INIT} sed -ie "s/^basedir=$/basedir=/opt/mysql/;s/^datadir=$/datadir=/var/lib/mysql/" ${INIT} ${INIT} start mysql -uroot -e "SELECT VERSION();" ${INIT} stop
Pooya says
Hi,
Thanks for your great guide, I managed to follow till this command: bin/mysql_upgrade -uroot
but after typing that I receive this error:
Looking for ‘mysql’ as: bin/mysql
Looking for ‘mysqlcheck’ as: bin/mysqlcheck
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306′ ‘–socket=/var/run/mysqld/mysqld.sock’
bin/mysqlcheck: Got error: 2002: Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) when trying to connect
FATAL ERROR: Upgrade failed
how should I fix this issue ?
thanks a lot
grails database fan says
Will this work if my MySQL 5.1 installation already have data? Or do I dump it first and restore after upgrade?