Skip to content

Instantly share code, notes, and snippets.

@dj1020
Forked from tobi-pb/migrate.sh
Last active February 5, 2019 13:05
Show Gist options
  • Save dj1020/2abeced8aac98bdd1690 to your computer and use it in GitHub Desktop.
Save dj1020/2abeced8aac98bdd1690 to your computer and use it in GitHub Desktop.
Upgrade MAMP to Mysql 5.7 tested by Ken Lin 2015/11/09
#!/bin/sh
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-osx10.10-x86_64.tar.gz
tar xfvz mysql-5.7*
echo "stopping mamp"
sudo /Applications/MAMP/bin/stop.sh
sudo killall httpd mysqld
echo "creating backup"
sudo rsync -a /Applications/MAMP ~/Desktop/MAMP-Backup
echo "copy bin"
sudo rsync -av mysql-5.7.*/bin/* /Applications/MAMP/Library/bin/ --exclude=mysqld_multi --exclude=mysqld_safe
echo "copy share"
sudo rsync -av mysql-5.7.*/share/* /Applications/MAMP/Library/share/
echo "fixing access (workaround)"
sudo chmod -R o+rw /Applications/MAMP/db/mysql/
sudo chmod -R o+rw /Applications/MAMP/tmp/mysql/
echo "starting mamp"
ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
sudo /Applications/MAMP/bin/start.sh
echo "migrate to new version"
sudo chmod -R 777 /Applications/MAMP/db/mysql/
/Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --host=localhost --port=3306
@timneutkens
Copy link

Thanks for sharing. Just used the commands because I have my data symlinked.
Edit: do note your sql server will end up in strict sql mode. You have to manually disable it.

@dannoso
Copy link

dannoso commented Apr 22, 2016

Thank a lot. I'm rushing on a project and just found my local MAMP with mysql 5.5. doesn't support the geo spatial functions i need.
This saved my time!!!

@kadnan
Copy link

kadnan commented Jun 16, 2016

it got stuck in first rsync - What should I do?

@coding-sunshine
Copy link

thanks! that worked perfectly

@kamov
Copy link

kamov commented Dec 18, 2016

After running this script, I can't launch mamp anymore.

This is error message:

This is error log:
161218 9:39:38 [Warning] Setting lower_case_table_names=2 because file system for /Library/Application Support/appsolute/MAMP PRO/db/mysql/ is case insensitive
161218 9:39:38 [Note] Plugin 'FEDERATED' is disabled.
161218 9:39:39 InnoDB: The InnoDB memory heap is disabled
161218 9:39:39 InnoDB: Mutexes and rw_locks use GCC atomic builtins
161218 9:39:39 InnoDB: Compressed tables use zlib 1.2.3
161218 9:39:39 InnoDB: Initializing buffer pool, size = 128.0M
161218 9:39:39 InnoDB: Completed initialization of buffer pool
InnoDB: Error: checksum mismatch in data file ./ibdata1
161218 9:39:39 InnoDB: Could not open or create data files.
161218 9:39:39 InnoDB: If you tried to add new data files, and it failed here,
161218 9:39:39 InnoDB: you should now edit innodb_data_file_path in my.cnf back
161218 9:39:39 InnoDB: to what it was, and remove the new ibdata files InnoDB created
161218 9:39:39 InnoDB: in this failed attempt. InnoDB only wrote those files full of
161218 9:39:39 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
161218 9:39:39 InnoDB: remove old data files which contain your precious data!
161218 9:39:39 [ERROR] Plugin 'InnoDB' init function returned error.
161218 9:39:39 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
161218 9:39:39 [ERROR] Unknown/unsupported storage engine: InnoDB
161218 9:39:39 [ERROR] Aborting

161218 9:39:39 [Note] /Applications/MAMP/Library/bin/mysqld: Shutdown complete

161218 09:39:39 mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended
161218 09:43:17 mysqld_safe Starting mysqld daemon with databases from /Library/Application Support/appsolute/MAMP PRO/db/mysql
161218 9:43:17 [Warning] Setting lower_case_table_names=2 because file system for /Library/Application Support/appsolute/MAMP PRO/db/mysql/ is case insensitive
161218 9:43:17 [Note] Plugin 'FEDERATED' is disabled.
161218 9:43:17 InnoDB: The InnoDB memory heap is disabled
161218 9:43:17 InnoDB: Mutexes and rw_locks use GCC atomic builtins
161218 9:43:17 InnoDB: Compressed tables use zlib 1.2.3
161218 9:43:17 InnoDB: Initializing buffer pool, size = 128.0M
161218 9:43:17 InnoDB: Completed initialization of buffer pool
InnoDB: Error: checksum mismatch in data file ./ibdata1
161218 9:43:17 InnoDB: Could not open or create data files.
161218 9:43:17 InnoDB: If you tried to add new data files, and it failed here,
161218 9:43:17 InnoDB: you should now edit innodb_data_file_path in my.cnf back
161218 9:43:17 InnoDB: to what it was, and remove the new ibdata files InnoDB created
161218 9:43:17 InnoDB: in this failed attempt. InnoDB only wrote those files full of
161218 9:43:17 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
161218 9:43:17 InnoDB: remove old data files which contain your precious data!
161218 9:43:17 [ERROR] Plugin 'InnoDB' init function returned error.
161218 9:43:17 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
161218 9:43:17 [ERROR] Unknown/unsupported storage engine: InnoDB
161218 9:43:17 [ERROR] Aborting

161218 9:43:17 [Note] /Applications/MAMP/Library/bin/mysqld: Shutdown complete

161218 09:43:17 mysqld_safe mysqld from pid file /Applications/MAMP/tmp/mysql/mysql.pid ended

any idea how to fix?
Thanks

@cbiggins
Copy link

This worked well, BUT with a few alterations.

  1. It didn't work when running as a script - I had to run each step manually.
  2. I had to append --force to mysql_upgrade

Thanks for this.

@welcomeuniverse
Copy link

Hi

I tried the above running each step manually on mac. I also appended --force to mysql_upgrade. However, I received the following warning message on my phpmyadmin


Warning in ./libraries/dbi/DBIMysqli.class.php#258
 mysqli_query(): (HY000/1682): Native table 'performance_schema'.'session_variables' has the wrong structure

Backtrace

./libraries/dbi/DBIMysqli.class.php#258: mysqli_query(
object,
string 'SHOW VARIABLES LIKE \'character_set_results\'',
integer 0,
)
./libraries/DatabaseInterface.class.php#183: PMA_DBI_Mysqli->realQuery(
string 'SHOW VARIABLES LIKE \'character_set_results\'',
object,
integer 0,
)
./libraries/DatabaseInterface.class.php#84: PMA_DatabaseInterface->tryQuery(
string 'SHOW VARIABLES LIKE \'character_set_results\'',
object,
integer 0,
boolean true,
)
./libraries/DatabaseInterface.class.php#1687: PMA_DatabaseInterface->query(
string 'SHOW VARIABLES LIKE \'character_set_results\'',
object,
)
./libraries/DatabaseInterface.class.php#2435: PMA_DatabaseInterface->postConnect(object)
./libraries/common.inc.php#984: PMA_DatabaseInterface->connect(
string ********,
string ********,
boolean false,
)
./index.php#12: require_once(./libraries/common.inc.php)

And on my command line, I received the following

$ /Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --host=localhost --port=3306 --force
mysql_upgrade: [Warning] Using a password on the command line interface can be insecure.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.engine_cost                                  OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv
error    : Table upgrade required. Please do "REPAIR TABLE `proxies_priv`" or dump/reload to fix it!
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK

Repairing tables
mysql.proxies_priv
Note     : TIME/TIMESTAMP/DATETIME columns of old format have been upgraded to the new format.
status   : OK
Upgrading the sys schema.
Checking databases.
sys.sys_config                                     OK

Repairing tables
mysql.proxies_priv                                 OK
Upgrade process completed successfully.
Checking if update is needed.

@philsam
Copy link

philsam commented Sep 4, 2017

Note: It might help anyone else
You might need to run the commands separately and refer to your correct path and mysql version. I did the following after manually downloading and installing mysql 5.7 (It appears under System preferences)

I ran the following commands.
cd to the location of your new mysql installation . i.e

cd /usr/local/
sudo rsync -av mysql/bin/* /Applications/MAMP/Library/bin/ --exclude=mysqld_multi --exclude=mysqld_safe
sudo chmod -R o+rw  /Applications/MAMP/db/mysql56/
sudo chmod -R o+rw  /Applications/MAMP/tmp/mysql56/
sudo chmod -R o+rw  /Applications/MAMP/tmp/mysql/
ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock
sudo chmod -R 777 /Applications/MAMP/db/mysql56
sudo chmod -R 777 /Applications/MAMP/db/mysql56/
/Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --host=localhost --port=3306

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment