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
sudo brew install mysql
If you want to allow connection from other 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 /usr/local/mysql/support-files/mysql.server start
Stop MySQL
sudo /usr/local/mysql/support-files/mysql.server stop
Restart MySQL
sudo /usr/local/mysql/support-files/mysql.server restart
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 | +-----------+------------------+------------+