Skip to content

Instantly share code, notes, and snippets.

@robhrt7
Forked from nrollr/MySQL_macOS_Sierra.md
Last active February 28, 2024 03:48
Show Gist options
  • Save robhrt7/392614486ce4421063b9dece4dfe6c21 to your computer and use it in GitHub Desktop.
Save robhrt7/392614486ce4421063b9dece4dfe6c21 to your computer and use it in GitHub Desktop.
Install MySQL 5.7 on macOS using Homebrew

This is a fork of original gist https://gist.github.com/nrollr/3f57fc15ded7dddddcc4e82fe137b58e, with slight changes on pointing to 5.7 version branch, instead of 8 (latest default of MySQL in Hombrew).

Install MySQL 5.7 on macOS

This procedure explains how to install MySQL using Homebrew on macOS (Sierra 10.12 and up)

Install Homebrew

  • Installing Homebrew is effortless, open Terminal and enter :
    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Note: Homebrew will download and install Command Line Tools for Xcode 8.0 as part of the installation process.

Install MySQL

At this time of writing, Homebrew has MySQL version 8 as default, but as we're aiming to get 5.7, we'll need to append @5.7 to the default package key:

  • Enter the following command : $ brew info mysql@5.7
  • Expected output: mysql@5.7: stable 5.7.22 (bottled) [keg-only]

To install MySQL enter : $ brew install mysql@5.7

Additional configuration

Homebrew

  • Install brew services first : $ brew tap homebrew/services

  • Load and start the MySQL service : $ brew services start mysql@5.7.
    Expected output : Successfully started mysql (label: homebrew.mxcl.mysql)

  • Check of the MySQL service has been loaded : $ brew services list 1

  • Force link 5.7 version - $ brew link mysql@5.7 --force

  • Verify the installed MySQL instance : $ mysql -V.
    Expected output : Ver 14.14 Distrib 5.7.22, for osx10.13 (x86_64)

MySQL

Open Terminal and execute the following command to set the root password:
mysqladmin -u root password 'yourpassword'

Important : Use the single ‘quotes’ to surround the password and make sure to select a strong password!

Database Management

To manage your databases, I recommend using Sequel Pro, a MySQL management tool designed for macOS.
Current version available: 1.1.2

Comments

1 The brew services start mysql@5.7 - instruction is equal to :

$ ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
@isaac-tribal
Copy link

Still seeing the "Can't connect to local MySQL server..."

Tried Greggle's link to fully remove a previous install of MySQL 8, but after a restart the problem persists

# brew services start mysql@5.7
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

# launchctl list | grep mysql
-	0	homebrew.mxcl.mysql@5.7

Brew services is reporting the service started, but Launchctl is not showing a PID.

Here is the log output

lee@kezzico:~# tail /usr/local/var/mysql/kezzico.local.err 
2018-10-03T21:57:10.986146Z 0 [ERROR] Can't start server: can't check PID filepath: No such file or directory
2018-10-03T21:57:11.6NZ mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

Finally got the service to start by creating a folder for the PID, and setting the permission on the folder to global read/write/x.

# sudo mkdir /var/run/mysqld
# chmod 777 /var/run/mysqld

Not sure why this is necessary. There may be security implications to this. Hopefully someone has a better solution.

Also you can change the mysql folder permissions to the current user.

sudo chown -Rv "$USER":admin /usr/local/var/mysql

@mefuru
Copy link

mefuru commented Mar 1, 2021

Works great until I attempt to create a password for root:

$ mysqladmin -u root password 'yourpassword'

I get the following error:

... Failed! Error: Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 50615, now running 50732. Please use mysql_upgrade to fix this error.

Any advice would be much appreciated?

@isaac-tribal
Copy link

Works great until I attempt to create a password for root:

$ mysqladmin -u root password 'yourpassword'

I get the following error:

... Failed! Error: Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 50615, now running 50732. Please use mysql_upgrade to fix this error.

Any advice would be much appreciated?

run this command, it will prompt a form about setting up root password

mysql_secure_installation

@mefuru
Copy link

mefuru commented Mar 1, 2021

Works great until I attempt to create a password for root:
$ mysqladmin -u root password 'yourpassword'
I get the following error:
... Failed! Error: Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 50615, now running 50732. Please use mysql_upgrade to fix this error.
Any advice would be much appreciated?

run this command, it will prompt a form about setting up root password

mysql_secure_installation

Did the trick, thanks!

@KeithTt
Copy link

KeithTt commented Mar 8, 2021

Thanks a lot!!!

@rolasteph
Copy link

I followed the instructions and did a clean install.
I got to the same "mysqladmin" point, but failed differently...

% mysqladmin -u root password '---redacted---'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

To get past this, here's what I ended up having to do:

  • Enter mysql and add a password for “root” user:

    • mysql -u root -p
    • It will prompt for password. THERE IS NO PASSWORD YET, SO JUST HIT ENTER
    • you should get the mysql> prompt
  • At the mysql> prompt:

    • mysql> use mysql;
    • mysql> update user set authentication_string=password("<desired root password>") where user="root";
    • mysql> exit
  • Restart the service to pick up the change:

    • brew services stop mysql@5.7
    • brew services start mysql@5.7

Now, when you do mysql -u root -p it will prompt for password and accept the new password you set above.

@sameeraswal
Copy link

I had to do below steps after following the given instructions:-
sudo mkdir /usr/local/var/mysql
sudo chmod 777 /usr/local/var/mysql
brew services restart mysql@5.7

@seemly
Copy link

seemly commented May 24, 2021

When setting up my Apple M1 Macbook Pro I was experiencing the issue of the following error message being thrown:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

My fix was to modify the MySQL config file:

nano /usr/local/etc/my.cnf

Append the following lines:

tmpdir=/tmp
user=root

Then run:

brew services restart mysql@5.7

This fixed my issue, and I was then able to connect successfully with my DB client.

@nima-z
Copy link

nima-z commented Nov 5, 2022

Thank you, It worked on macOS Monterey.

@claide
Copy link

claide commented Mar 23, 2023

Not working for me on mac os m2 ventura.

I did start mysql@5.7 and gives me Successfully started mysql@5.7 (label: homebrew.mxcl.mysql@5.7) message. But, when I tried to view the list of services to check if it's really started, I got this status below which is stopped.

image

@minily
Copy link

minily commented Feb 28, 2024

much good!

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