场景一:使用 mysqld_safe
启动 mysqld
使用命令 mysqld_safe --datadir=./mydata
启动 mysql 服务的时候,服务没起来,查看目录 /var/log/mysql/
的日志,发现是创建文件时没有权限。
警告查找,在 https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/starting-server-troubleshooting.html 找到解决方案,就是把目录所有文件的 owner 改成 mysql 就可以了。
但是,改了还是不行,因为 mydata 的上级目录仍然没有 mysql 的权限。所以,把 mydata mv
到 /var/lib/mysql/
中,再通过 mysqld_safe --datadir=/var/lib/mysql/mydata
命令启动,就可以成功了。
场景二:使用 docker 启动mysql
使用 docker 启动 mysql 服务的时候,使用的仍然是旧数据文件,但是启动数据库后,没有加载旧的数据库。 如果还是文件权限的问题,那么需要在容器内部修改文件的权限
-
进入容器 xx_mysql:
docker exec -it xx_mysql bash
-
修改目录权限:
chown mysql:mysql /var/lib/mysql/mydata
-
退出容器,并重启 docker 容器:
docker-compose restart xx_mysql
然后就可以了。