在 Mac 下用 Homebrew 安装 MySQL, 网上的教程倒是很多,不过大多数都很默契地雷同。如果稍有点定制要求,就无从下手了。
我先也不免俗,从基本的开始:
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" $ brew install git $ brew update
用下面的命令就可以自动安装了:
$ brew install mysql
如果想让 MySQL 开机自动启动,可以如下操作:
$ mkdir -p ~/Library/LaunchAgents $ ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents $ find /usr/local/Cellar/mysql/ -name "homebrew.mxcl.mysql.plist" -exec cp {} ~/Library/LaunchAgents/ \; $ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
设置 MySQL 用户以及数据存放地址
$ unset TMPDIR $ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
好了,可以启动了
$ mysql.server start
另外的参数还有 {start|stop|restart|reload|force-reload|status}
大部分的介绍就在此结束了。
作为用惯了 Linux 的人, 一定会去 /etc
下找 my.cnf
, 让你失望了,这个文件要自己建立。如果看一下帮助
$ mysqld --help --verbose
就会发现系统会按这个顺序去找 my.cnf
一般网上大虾都会这么教小白建立 my.cnf, 其实这个默认的文件里面几乎没什么内容。
$ sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
所以,还是自己老老实实参考 linux 下的配置文件吧。
my.cnf (my.cnf.txt)download
# # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with # ticks/quotes escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing # the socket location. [client] port = 3306 #socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions # are currently parsed. [mysqld_safe] #socket = /var/run/mysqld/mysqld.sock #nice = 0 [mysqld] # # * Basic Settings # # # * IMPORTANT # If you make changes to these settings and your system uses # apparmor, you may also need to also adjust # /etc/apparmor.d/usr.sbin.mysqld. # #user = mysql #socket = /var/run/mysqld/mysqld.sock port = 3306 #basedir = /usr datadir = /usr/local/var/mysql #tmpdir = /tmp skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. # As of 5.1 you can enable the log at runtime! #general_log_file = /var/log/mysql/mysql.log #general_log = 1 log_error = /usr/local/var/mysql/MacBook15.local.err # Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or # for replication. # note: if you are setting up a replication slave, see # README.Debian about other settings you may need # to change. #server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem # Query Caching query-cache-type = 1 # Default to InnoDB default-storage-engine=innodb [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M
错误日志默认会存在数据目录下,也就是上面所定义的 /usr/local/var/mysql/
,如果 Mac 电脑名字是 MacBook,那日志的全路径就是 /usr/local/var/mysql/MacBook.local.err
取消下面两个文件中关于绑定 127.0.0.1 的语句
/etc/my.cnf
bind-address = 127.0.0.1
~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
<string>--bind-address=127.0.0.1</string>
就我个人而言,不需要 MySQL 自启动,所以只要在 /etc/my.cnf
改一下就好了。