There are some differences in between Mac and Linux(CentOS) for my.cnf and some command line interfaces. There are two different approach to install MySQL on MAC: 1) Install by dmg file can download at https://www.mysql.com/downloads/ and 2) installing by brew. I will talk about the installation based on brew here.
Install MySQL by brew
If you face any error when you run below command line, you will need to install brew.
sudo brew install mysql
If you want to allow connection from external servers, you need to modify /usr/local/Cellar/mysql/8.0.19/homebrew.mxcl.mysql.plist and bind-address=0.0.0.0 as following:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>homebrew.mxcl.mysql</string> <key>ProgramArguments</key> <array> <string>/usr/local/opt/mysql/bin/mysqld_safe</string> <string>--datadir=/usr/local/var/mysql</string> <string>--bind-address=0.0.0.0</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/usr/local/var/mysql</string> </dict> </plist>
MySQL server I used is 8.0.19, so the directory path for homebrew.mxcl.mysql.plist could be different than mine.
If you need to modify my.cnf, you will need to create it by vi /etc/my.cnf
# # created by Chun Kang 2020-03-09 # based on the guide at https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html # [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 bind-address=0.0.0.0 skip-name-resolve character-set-server=utf8mb4 collation-server=utf8mb4_bin default-storage-engine=INNODB max_allowed_packet=256M innodb_log_file_size=2GB transaction-isolation=READ-COMMITTED binlog_format=row default_time_zone='+09:00' max_connections=4096
Start MySQL
sudo brew services start mysql
Stop MySQL
sudo brew services stop mysql
Restart MySQL
sudo brew services restart mysql
Set root access permission from all hosts
cd /usr/local/mysql/bin mysql -u root -p mysql
If you see > prompt, you can change it by below
update set host='%' from user where user='root'; flush;
If everything is okay, you can check it as following
select host, user, grant_priv from user; +-----------+------------------+------------+ | host | user | grant_priv | +-----------+------------------+------------+ | % | root | Y | | localhost | mysql.infoschema | N | | localhost | mysql.session | N | | localhost | mysql.sys | N | +-----------+------------------+------------+