刚成为MBP用户,装上mysql之后,打算切换一下数据库data目录位置,发现网上的教程大多数有问题,简单总结一下。
我是在mysql.com下载的dmg文件,如果下载tar.gz,那么内含的INSTALL文档,仔细阅读照做即可。考虑到我对mac的结构还是不太熟悉,这玩意和linux还是有点似是而非的,所以使用了dmg安装。
首先现在最新的dmg文件,里面只有一个pkg,没有像网上文章所说还有个单独安装启动项目的,这都是老黄历了。
直接安装pkg后,如果是给所有用户,目录位置是
/usr/local/mysql, 这是一个link,指向/usr/local/mysql-xxxxx...就是你实际的mysql目录;同时设置的最下面多了个mysql的面板项可以选择启动、停止、是否自动启动。
如果要把mysql的data目录迁移出来,有两个方法,最简单的是拷贝data到你需要的目录,然后把原来实际目录下的data目录删除,然后ln -s做个软连接指向即可。注意data目录拷贝的时候需要sudu,拷贝完毕之后一定把权限给_mysql组,ls -l可以看到权限。
sudo chown -R _mysql:_mysql data目录,即可。
然后是my.cnf,网上有详细的mysql搜索my.cnf的路径顺序,或者mysqld也提供了输出告诉你顺序,本来my.cnf里面有datadir可以指定这个目录,但是实际上启动mysql之后,ps -ef | grep mysql
你会发现mysqld是被一连串的命令行参数启动的,里面指定了datadir等参数:
/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid
因为我没找到怎么改,所以干脆按照unix/linux的规则,data目录做链接,然后my.cnf只指定port,bind-address等基本内容。
=====================
update一下,其实最后觉得还是brew好,brew install mysql,提示:
To connect:
mysql -uroot
To have launchd start mysql at login:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
mysql.server start
数据库目录:
/usr/local/var/mysql
最后mysql的data目录其实是当前用户权限,可以轻松备份。