5
Mac OSX 下的数据库升级最麻烦的不过权限的问题.

本文的MySQL的安装方式为OSX下DMG磁盘镜像的安装方式, Mac Ports/Homebrew 的方式大同小异.

从 5.6.17 升级到 5.7.18

安装目录信息

ls -al /usr/local |grep mysql


lrwxr-xr-x    1 root        wheel    30B  5 21 00:39 mysql@ -> mysql-5.6.17-osx10.7-x86_64
drwxr-xr-x    5 root        wheel   170B  5 21 00:39 mysql-5.6.17-osx10.7-x86_64/
drwxr-xr-x   13 root        wheel   442B  5 21 00:46 mysql-5.7.18-macos10.12-x86_64/

安装新MySQL版本

这个过程会删除 mysql-5.6.17-osx10.7-x86_64 下的除data目录以外的文件. 为了避免数据丢失, 最好先把data备份到其他位置. 新PKG包安装完成后 mysql@ 软连接的目标会指向新版本.

ls -al /usr/local |grep mysql

lrwxr-xr-x    1 root        wheel    30B  5 21 00:39 mysql@ -> mysql-5.7.18-macos10.12-x86_64
drwxr-xr-x    5 root        wheel   170B  5 21 00:39 mysql-5.6.17-osx10.7-x86_64/
drwxr-xr-x   13 root        wheel   442B  5 21 00:46 mysql-5.7.18-macos10.12-x86_64/

升级

# 进入新版本目录

cd /usr/local/mysql-5.7.18-macos10.12-x86_64

# 删除新版本的数据目录

sudo rm -rf ./data

# 复制老版本的数据目录到新版本目录

sudo cp -R ../mysql-5.6.17-osx10.7-x86_64/data ./

# 修复目录权限

sudo chown -R _mysql ./data

# 启动MySQL
# 一定要加 --skip-grant-tables 关闭权限检查

sudo ./bin/mysqld_safe --skip-grant-tables

# 执行升级脚本
# 升级过程有哦一大堆升级信息输出, 最关键的是: Upgrade process completed successfully. 看到这个就说明升级成功了.

sudo ./bin/mysql_upgrade

# 停止通过 mysqld_safe 启动的服务器, 正常启动服务器

sudo ./support-files/mysql.server stop
sudo ./support-files/mysql.server start

完! ^_^


developerworks
1.7k 声望266 粉丝