CentOS 7 安装 MySQL 8.0 部署文档
1. 安装 MySQL
-
添加 MySQL Yum 仓库:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
-
安装 MySQL 服务:
sudo yum install --nogpgcheck mysql-community-server
2. 初始化 MySQL
-
初始化数据库:
mysqld --initialize --user=mysql --lower-case-table-names=1
-
记录 root 密码:
查看/var/log/mysqld.log
文件获取自动生成的临时 root 密码。grep "password" /var/log/mysqld.log
3. 修改 /etc/my.cnf
配置文件
-
编辑配置文件:
vi /etc/my.cnf
-
添加配置:
在[mysqld]
下添加:lower-case-table-names=1 default-time_zone='+8:00' max_connections=1000 max_connect_errors=1000 default-authentication-plugin=mysql_native_password character-set-server=utf8 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
在
[client]
和[mysql]
下添加:default-character-set=utf8
4. 启动 MySQL 服务
systemctl start mysqld
5. 修改数据库 root 密码及创建全域 root 用户
-
登录 MySQL:
使用记录的临时密码登录。mysql -u root -p
-
修改 root 用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'QWER1234@';
-
创建全域 root 用户:
CREATE USER 'root'@'%' IDENTIFIED BY 'QWER1234@'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
-
更改权限:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE user ='root' AND host='%'; FLUSH PRIVILEGES;
6. 配置修改
-
重启 MySQL 服务:
systemctl restart mysqld
-
验证配置:
使用相应的验证 SQL 语句来确认配置的修改。
7. 更改数据文件存储位置
-
停止 MySQL 服务:
systemctl stop mysqld
-
创建新的数据存储路径:
mkdir -p /home/data/mysql mv /var/lib/mysql/* /home/data/mysql/
-
修改
/etc/my.cnf
配置:
在[mysqld]
下修改datadir
和socket
路径。datadir=/home/data/mysql socket=/home/data/mysql/mysql.sock
在
[client]
下添加:socket=/home/data/mysql/mysql.sock
-
启动 MySQL 服务:
systemctl start mysqld
确保MySQL服务能够顺畅运行,还需要确保相关的文件和目录权限设置正确。在更改数据文件存储位置后,特别需要注意这一点,因为操作系统的安全策略可能会阻止MySQL服务访问新的数据目录。
确保正确的权限设置
在移动数据文件并更改my.cnf
配置后,需要确保新的数据目录(/home/data/mysql
)拥有正确的拥有者(通常是mysql
用户)和权限设置,以便MySQL服务能够访问和修改这些文件。
设置目录权限
-
更改数据目录的拥有者:
使用chown
命令将新数据目录的拥有者更改为mysql
用户和组。这一步确保了MySQL服务有权访问该目录及其中的文件。chown -R mysql:mysql /home/data/mysql
-
检查并设置目录权限:
使用chmod
命令确保目录具有正确的权限。通常,目录应该设置为700权限,文件设置为660权限,这样只有拥有者(即mysql
用户)才能访问。find /home/data/mysql -type d -exec chmod 700 {} \; find /home/data/mysql -type f -exec chmod 660 {} \;
配置SELinux(如果启用)
如果您的系统启用了SELinux(安全增强型Linux),还需要更新SELinux策略,以允许MySQL服务访问新的数据目录。可以使用semanage
命令来添加必要的策略规则:
semanage fcontext -a -t mysqld_db_t "/home/data/mysql(/.*)?"
restorecon -Rv /home/data/mysql
这些命令设置了SELinux上下文,使得MySQL服务能够访问/home/data/mysql
目录。
重启MySQL服务
完成上述步骤后,您可以重新启动MySQL服务来应用更改:
systemctl restart mysqld
验证服务状态
验证MySQL服务是否成功启动,并且能够正常访问新的数据目录:
systemctl status mysqld
如果服务启动成功,并且没有错误信息,那么您已经成功地将MySQL的数据文件移动到了新的位置,并且正确设置了所有必要的权限和SELinux策略(如果适用)。
通过遵循这些步骤,您可以确保MySQL服务在CentOS 7系统上安全、稳定地运行,同时也能够灵活地管理数据存储的位置。