There are some differences in between Mac and Linux(CentOS) for my.cnf and some command line interfaces.
For your information, below is based on MySQL 8 and Mac OS X. There are two different approach to install MySQL on MAC, but 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 | +-----------+------------------+------------+