CentOS7安装MySQL5.7到指定数据目录
CentOS7安装MySQL5.7到指定数据目录
在 CentOS 7 中将 MySQL 5.7 安装到指定目录(例如 /opt/mysql)的详细步骤:
一、准备工作
- 卸载旧版本 MySQL/MariaDB
#卸载 MySQL
sudo yum remove mysql-server mysql-client mysql-common
sudo rm -rf /var/lib/mysql
#检查并卸载 MariaDB
sudo yum list installed | grep mariadb
或
rpm -qa | grep mariadb
sudo yum remove mariadb-libs -y
#删除残留文件
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/my.cnf
二、通过 YUM 安装 MySQL 5.7
- 添加 MySQL YUM 仓库
sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
- 安装 MySQL 服务端和客户端
sudo yum install mysql-community-server -y
- 创建目标目录
#创建目录并设置权限(假设目标目录为 /opt/mysql)
sudo mkdir -p /opt/mysql/data
sudo chown -R mysql:mysql /opt/mysql # 确保目录属主为 mysql 用户
sudo chmod 750 /opt/mysql/data # 设置目录权限
4.迁移数据目录到指定路径
-
一种方式(推荐):
安装完成后,先不要启动mysql,先去配置mysql(跳到步骤三——往下操作), 配置完成后,在启动mysql即可。 -
另一种方式:
启动了mysql, 通过创建软连接的方式(即采用了默认数据目录,通过软连接到其他目录)
启动 MySQL 服务
sudo systemctl start mysqld
停止 MySQL 服务
sudo systemctl stop mysqld
复制原数据文件到新目录
#将默认数据目录 /var/lib/mysql 迁移到 /opt/mysql/data
sudo rsync -av /var/lib/mysql/ /opt/mysql/data/
或者
sudo mv /var/lib/mysql/* /opt/mysql/data/
删除原数据目录(备份后可删除)
sudo rm -rf /var/lib/mysql
创建软链接(兼容性操作)
sudo ln -s /opt/mysql/data /var/lib/mysql
这样就不需要后续的配置,即采用了默认数据目录,通过软连接到其他目录。
三、配置 MySQL
- 修改配置文件 /etc/my.cnf
sudo vi /etc/my.cnf
#添加或修改以下配置项:
[mysqld]
datadir = /opt/mysql/data # 关键:指定数据目录
socket = /opt/mysql/mysql.sock
[client]
socket = /opt/mysql/mysql.sock
- 更新 SELinux 上下文(可选,可以禁用SELINUX=disabled)
#查看SELinux是否启用
sestatus
或
cat /etc/selinux/config
SELINUX=enforcing:表示 SELinux 是启用并应用策略的。
SELINUX=permissive:表示 SELinux 是启用的,但仅记录违规而不强制执行策略。
SELINUX=disabled:表示 SELinux 是禁用的。
#修改目录安全上下文
sudo semanage fcontext -a -t mysqld_db_t "/opt/mysql/data(/.*)?"
sudo restorecon -Rv /opt/mysql/data
四、调整 systemd 服务配置
- 修改 systemd 服务文件
sudo vi /usr/lib/systemd/system/mysqld.service
找到以下行并修改:
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
改为(添加 --datadir 参数):
ExecStart=/usr/sbin/mysqld --daemonize --datadir=/opt/mysql/data --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
- 重新加载 systemd 配置
sudo systemctl daemon-reload
五、启动 MySQL 并验证
- 启动服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
- 检查数据目录是否生效
mysqladmin -u root -p variables | grep datadir
输出应显示:
| datadir | /opt/mysql/data/
- 验证服务状态
sudo systemctl status mysqld
六、处理首次登录和安全配置
- 获取临时 root 密码
sudo grep 'temporary password' /var/log/mysqld.log
- 运行安全配置向导
sudo mysql_secure_installation
按提示操作:
输入临时密码
设置新密码
移除匿名用户(Y)
禁止远程 root 登录(Y)
删除测试数据库(Y)
刷新权限表(Y)
七、开放防火墙(可选)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
八、验证远程访问(可选)
- 创建远程用户
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'YourPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%';
FLUSH PRIVILEGES;
- 修改配置文件允许远程
#/etc/my.cnf
[mysqld]
bind-address = 0.0.0.0
九、故障排查
- 启动失败检查日志
sudo tail -f /var/log/mysqld.log
- 权限问题处理
#确保目录属主正确
sudo chown -R mysql:mysql /opt/mysql
sudo chmod 750 /opt/mysql/data
- 重置 SELinux 上下文
sudo restorecon -Rv /opt/mysql/data
十、最终验证
#登录 MySQL
mysql -u root -p
--执行 SQL 查看数据目录
SHOW VARIABLES LIKE 'datadir';
--应输出:
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| datadir | /opt/mysql/data/ |
+---------------+-------------------+
通过以上步骤,您已成功将 MySQL 5.7 安装到自定义目录 /opt/mysql。关键点在于正确迁移数据文件、修改配置文件、更新 SELinux 策略及调整 systemd 服务配置。