一般 MySQL 安装在 / usr/local / 下, 现以将 / usr/local/MySQL/data 目录移动到 / home/MySQL 下为例
首先保证 / home/MySQL 目录是存在的, 本例中使用了 MySQL 开机启动, 如下为 data 目录未移动之前的开机启动 service 文件
- [Unit]
- Description=MySQL
- After=syslog.target network.target remote-fs.target nss-lookup.target
- [Service]
- Type=forking
- PIDFile=/usr/local/MySQL/data/MySQL.pid
- ExecStart=/usr/local/MySQL/support-files/MySQL.server start
- ExecReload=/bin/kill -s HUP $MAINPID
- ExecStop=/bin/kill -s QUIT $MAINPID
- PrivateTmp=false
- [Install]
- WantedBy=multi-user.target
- View Code
若未使用开机启动, 也可使用下面命令分别对 MySQL 进行启动和停止操作
启动 MySQL
/usr/local/MySQL/support-files/MySQL.server start
停止 MySQL
/usr/local/MySQL/support-files/MySQL.server stop
下面开始进入 MySQL data 目录移动
1, 停止 MySQL
systemctl stop MySQL
2, 移动 MySQL data 目录
mv /usr/local/MySQL/data /home/MySQL/
3, 修改 MySQL 配置文件 my.cnf, 一般在 / etc / 下, 在 [mysqld] 下添加或修改如下参数
- pid-file=/home/MySQL/data/MySQL.pid
- datadir=/home/MySQL/data
4, 修改 MySQL 启动文件,/usr/local/MySQL/support-files/MySQL.server
该文件中 datadir 目录默认为空, 修改成如下形式
datadir=/home/MySQL/data
5, 修改开机启动文件,/usr/local/systemd/system/MySQL.service,PIDFile 修改成如下形式
PIDFile=/home/MySQL/data/MySQL.pid
6, 启动 MySQL
systemctl start MySQL
MySQL 启动常见问题
"The server quit without updating PID file" 是比较常见的 MySQL 启动问题
- Nov 21 10:34:51 localhost.localdomain systemd[1]: Starting MySQL...
- Nov 21 10:34:53 localhost.localdomain MySQL.server[45912]: Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/MySQL/data/MySQL.pid).
- Nov 21 10:34:53 localhost.localdomain systemd[1]: MySQL.service: control process exited, code=exited status=1
- Nov 21 10:34:53 localhost.localdomain systemd[1]: Failed to start MySQL.
- Nov 21 10:34:53 localhost.localdomain systemd[1]: Unit MySQL.service entered failed state.
启动错误, 在 MySQL 的 data 目录下会存在一个后缀为 err 的日志, 上述 MySQL data 目录移动后, 日志路径变为 / home/MySQL/data/localhost.localdomain.err, 该日志会提供一些启动失败的错误信息
如下解决方式供参考
一,/usr/local/MySQL/data 目录不存在
解决方案:(两种方式)
1, 修改 / etc/my.cnf 文件, 添加 pid-file, 指向 MySQL 具有权限的地址
2, 新建 /usr/local/MySQL/data 目录, 要保证 MySQL 对该目录 具有权限
二, MySQL 对 / usr/local/MySQL/data 目录不具有权限
解决方案
chown -R MySQL:MySQL /usr/local/MySQL/data
三, 进程中已经启动有 MySQL, 通过 "ps -ef|grep mysqld" 查看, 如果存在则, kill 掉
四, 删除 MySQL 时为删除完全
解决方案:
在 MySQL 安装目录下的 data 目录下, 查看是否存在 MySQL-binlog.index, 若存在, 则删除
五, MySQL 启动时未指定 datadir
解决方案:
在 MySQL 配置文件 / etc/my.cnf, 及启动文件 MySQL.server 中添加 datadir, 可参考上述 "mysql data 目录移动" 进行设置
六, CentOS 系统, 默认会开启 selinux (暂时还未碰到过)
解决方案:
1, 临时改为告警模式, shell 命令行输入 setenforce 0
2, 打开 / etc/sysconfig/selinux, 把 SELINUX=enforcing 改为 SELINUX=disabled
来源: http://www.bubuko.com/infodetail-2855027.html