技术博客
惊喜好礼享不停
技术博客
ARM64架构下CentOS 7操作系统上MySQL 5.7的详尽安装指南

ARM64架构下CentOS 7操作系统上MySQL 5.7的详尽安装指南

作者: 万维易源
2024-12-06
ARM64CentOSMySQL安装配置

摘要

本教程旨在指导用户如何在ARM64架构的CentOS 7操作系统上安装MySQL 5.7数据库。通过详细的步骤说明,帮助用户顺利完成安装前的准备、具体的安装过程以及安装后的基本配置。

关键词

ARM64, CentOS, MySQL, 安装, 配置

一、安装前的准备工作

1.1 ARM64架构与CentOS 7操作系统的兼容性分析

在当今的计算领域,ARM64架构因其低功耗和高性能的特点而备受关注。ARM64架构不仅适用于移动设备,还逐渐扩展到服务器和数据中心。CentOS 7作为一款广泛使用的Linux发行版,其对ARM64架构的支持也在不断加强。通过在ARM64架构上运行CentOS 7,用户可以享受到更高的能效比和更灵活的计算资源管理。然而,由于ARM64架构与传统的x86架构存在显著差异,因此在选择和配置操作系统时需要特别注意兼容性和性能优化问题。CentOS 7在ARM64架构上的表现已经相当成熟,能够满足大多数企业级应用的需求。

1.2 MySQL 5.7版本特点及其对ARM64架构的支持

MySQL 5.7是MySQL数据库的一个重要版本,它引入了许多新功能和性能改进,使其成为企业级应用的理想选择。MySQL 5.7的主要特点包括:

  • 性能优化:通过改进查询优化器和存储引擎,MySQL 5.7在处理复杂查询和大数据量时表现出色。
  • 安全性增强:新增了多种安全特性,如强制密码策略和审计日志,确保数据的安全性和完整性。
  • JSON支持:引入了对JSON数据类型的支持,使得处理非结构化数据更加方便。
  • InnoDB改进:InnoDB存储引擎的性能和可靠性得到了显著提升,支持在线DDL操作和并行复制。

对于ARM64架构,MySQL 5.7提供了良好的支持。官方已经发布了针对ARM64架构的预编译二进制包,用户可以直接下载并安装。此外,MySQL 5.7在ARM64架构上的性能表现也非常出色,能够充分利用ARM64处理器的多核优势,提供高效的数据库服务。

1.3 安装MySQL前的系统环境配置

在开始安装MySQL 5.7之前,确保系统环境已经正确配置是非常重要的。以下是一些关键步骤:

  1. 更新系统:首先,确保CentOS 7系统是最新的。可以通过以下命令更新系统软件包:
    sudo yum update -y
    
  2. 安装依赖项:安装MySQL 5.7所需的依赖项,包括开发工具和库文件:
    sudo yum groupinstall "Development Tools" -y
    sudo yum install libaio numactl -y
    
  3. 禁用SELinux:为了简化安装过程,建议暂时禁用SELinux。编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive,然后重启系统:
    sudo vi /etc/selinux/config
    sudo reboot
    
  4. 添加MySQL Yum仓库:为了方便安装,可以添加MySQL的官方Yum仓库。下载并安装MySQL Yum仓库的RPM包:
    wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    sudo rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
    
  5. 检查仓库配置:确保MySQL 5.7仓库已正确添加。可以通过以下命令查看:
    sudo yum repolist enabled | grep "mysql.*-community.*"
    

通过以上步骤,您可以为安装MySQL 5.7做好充分的准备,确保安装过程顺利进行。

二、安装MySQL 5.7数据库

2.1 使用YUM仓库进行MySQL安装的步骤

在完成了所有必要的准备工作之后,接下来的步骤是使用YUM仓库来安装MySQL 5.7。这种方法简单快捷,适合大多数用户。以下是详细的安装步骤:

  1. 更新YUM缓存:首先,确保YUM缓存是最新的,以便获取最新的软件包信息。
    sudo yum makecache fast
    
  2. 安装MySQL 5.7:使用YUM命令安装MySQL 5.7。系统会自动从已添加的MySQL Yum仓库中下载并安装所需的软件包。
    sudo yum install mysql-community-server -y
    
  3. 启动MySQL服务:安装完成后,启动MySQL服务并设置开机自启动。
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
    
  4. 检查MySQL服务状态:确保MySQL服务已经成功启动。
    sudo systemctl status mysqld
    
  5. 获取临时密码:首次安装MySQL时,系统会生成一个临时密码。该密码记录在日志文件中,可以通过以下命令查看:
    sudo grep 'temporary password' /var/log/mysqld.log
    
  6. 修改初始密码:使用临时密码登录MySQL,并修改初始密码以增强安全性。
    mysql -u root -p
    

    登录后,执行以下命令修改密码:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    EXIT;
    

通过以上步骤,您可以在ARM64架构的CentOS 7上成功安装并配置MySQL 5.7,为后续的数据管理和应用开发打下坚实的基础。

2.2 源代码编译安装MySQL的过程

对于需要更高定制化需求的用户,源代码编译安装MySQL 5.7是一个不错的选择。这种方法虽然较为复杂,但可以更好地控制安装过程和配置选项。以下是详细的编译安装步骤:

  1. 下载MySQL源代码:从MySQL官方网站下载MySQL 5.7的源代码包。
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35.tar.gz
    
  2. 解压源代码包:将下载的源代码包解压到指定目录。
    tar -zxvf mysql-5.7.35.tar.gz -C /usr/local/src/
    cd /usr/local/src/mysql-5.7.35
    
  3. 安装编译工具和依赖项:确保系统已经安装了必要的编译工具和依赖项。
    sudo yum groupinstall "Development Tools" -y
    sudo yum install cmake bison ncurses-devel -y
    
  4. 创建MySQL用户和组:为了安全起见,创建一个专门用于运行MySQL的用户和组。
    sudo groupadd mysql
    sudo useradd -r -g mysql mysql
    
  5. 配置编译选项:使用CMake配置编译选项。根据实际需求调整配置参数。
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
            -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
            -DDEFAULT_CHARSET=utf8mb4 \
            -DDEFAULT_COLLATION=utf8mb4_general_ci \
            -DWITH_INNOBASE_STORAGE_ENGINE=1 \
            -DWITH_PARTITION_STORAGE_ENGINE=1 \
            -DWITH_FEDERATED_STORAGE_ENGINE=1 \
            -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
            -DWITH_MYISAM_STORAGE_ENGINE=1 \
            -DENABLED_LOCAL_INFILE=1 \
            -DWITH_READLINE=1 \
            -DWITH_SSL=system \
            -DWITH_ZLIB=system \
            -DWITH_EMBEDDED_SERVER=1 \
            -DENABLE_DTRACE=0
    
  6. 编译和安装:编译源代码并安装MySQL。
    make -j $(nproc)
    sudo make install
    
  7. 初始化数据库:初始化MySQL数据库并设置权限。
    sudo chown -R mysql:mysql /usr/local/mysql
    sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql
    sudo /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
    
  8. 配置MySQL服务:创建MySQL服务文件并设置开机自启动。
    sudo cp support-files/mysql.server /etc/init.d/mysql
    sudo chmod +x /etc/init.d/mysql
    sudo chkconfig --add mysql
    sudo chkconfig mysql on
    
  9. 启动MySQL服务:启动MySQL服务并检查状态。
    sudo service mysql start
    sudo service mysql status
    
  10. 修改初始密码:使用临时密码登录MySQL,并修改初始密码。
    sudo /usr/local/mysql/bin/mysql -u root -p
    

    登录后,执行以下命令修改密码:
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    EXIT;
    

通过以上步骤,您可以从源代码编译并安装MySQL 5.7,获得更高的灵活性和定制化能力。

2.3 安装过程中可能遇到的问题及解决方案

在安装MySQL 5.7的过程中,可能会遇到一些常见的问题。以下是一些常见问题及其解决方案:

  1. 依赖项缺失:如果在安装过程中提示缺少某些依赖项,可以通过以下命令安装:
    sudo yum install [缺失的依赖项]
    
  2. SELinux阻止MySQL启动:如果SELinux阻止MySQL服务启动,可以尝试将SELinux设置为宽容模式:
    sudo setenforce 0
    
  3. 端口冲突:如果MySQL默认端口3306被其他服务占用,可以通过修改配置文件/etc/my.cnf中的port参数来更改端口:
    [mysqld]
    port=3307
    
  4. 临时密码无法找到:如果无法找到临时密码,可以尝试重置密码。首先停止MySQL服务,然后以跳过权限表的方式启动MySQL:
    sudo systemctl stop mysqld
    sudo mysqld_safe --skip-grant-tables &
    

    然后登录MySQL并重置密码:
    mysql -u root
    

    执行以下命令重置密码:
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    EXIT;
    

    最后,重启MySQL服务:
    sudo systemctl start mysqld
    
  5. 编译错误:如果在编译过程中遇到错误,可以尝试清理编译环境并重新编译:
    make clean
    make -j $(nproc)
    

通过以上解决方案,您可以有效地解决安装过程中可能出现的问题,确保MySQL 5.7在ARM64架构的CentOS 7上顺利安装和运行。

三、安装后的基本配置

3.1 配置MySQL的root用户权限

在成功安装MySQL 5.7之后,配置root用户的权限是确保数据库安全的重要步骤。root用户拥有最高级别的权限,可以执行所有数据库操作,因此必须谨慎管理。以下是配置root用户权限的详细步骤:

  1. 登录MySQL:首先,使用临时密码登录MySQL。
    mysql -u root -p
    
  2. 修改root用户密码:为了增强安全性,建议立即修改root用户的初始密码。
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    
  3. 删除匿名用户:匿名用户允许任何人无需用户名和密码即可访问数据库,这显然是不安全的。删除匿名用户可以提高系统的安全性。
    DELETE FROM mysql.user WHERE User='';
    FLUSH PRIVILEGES;
    
  4. 禁止root用户远程登录:为了进一步增强安全性,建议禁止root用户从远程主机登录。这可以通过修改用户表中的Host字段来实现。
    UPDATE mysql.user SET Host='localhost' WHERE User='root';
    FLUSH PRIVILEGES;
    
  5. 创建其他管理员用户:为了分散权限,建议创建其他具有管理员权限的用户。这样即使root用户的密码泄露,也不会影响整个系统的安全。
    CREATE USER 'admin'@'localhost' IDENTIFIED BY '管理员密码';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

通过以上步骤,您可以确保MySQL的root用户权限得到合理配置,从而提高数据库的安全性和稳定性。

3.2 初始化MySQL数据库

初始化MySQL数据库是确保数据库正常运行的关键步骤。正确的初始化可以避免许多潜在的问题,确保数据库在启动时处于最佳状态。以下是初始化MySQL数据库的详细步骤:

  1. 创建数据目录:首先,确保MySQL的数据目录已经创建并且具有正确的权限。
    sudo mkdir -p /var/lib/mysql
    sudo chown -R mysql:mysql /var/lib/mysql
    
  2. 初始化数据库:使用MySQL提供的初始化脚本来创建必要的系统表和数据文件。
    sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql
    
  3. 生成SSL证书:为了增强安全性,建议生成SSL证书并启用SSL连接。这可以通过以下命令实现:
    sudo /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/var/lib/mysql
    
  4. 启动MySQL服务:初始化完成后,启动MySQL服务并检查其状态。
    sudo systemctl start mysqld
    sudo systemctl status mysqld
    
  5. 验证初始化结果:登录MySQL并检查系统表是否正确创建。
    mysql -u root -p
    SHOW DATABASES;
    

通过以上步骤,您可以确保MySQL数据库在ARM64架构的CentOS 7上正确初始化,为后续的数据管理和应用开发打下坚实的基础。

3.3 设置MySQL的字符编码及时区

设置MySQL的字符编码和时区是确保数据一致性和正确显示的重要步骤。正确的字符编码可以避免乱码问题,而正确的时区设置则可以确保时间数据的准确性。以下是设置MySQL字符编码和时区的详细步骤:

  1. 修改字符编码:编辑MySQL的配置文件/etc/my.cnf,添加或修改以下配置项以设置默认字符编码为UTF-8。
    [mysqld]
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    
  2. 修改时区设置:同样在/etc/my.cnf文件中,添加或修改以下配置项以设置默认时区。
    [mysqld]
    default-time-zone='+08:00'
    
  3. 重启MySQL服务:保存配置文件后,重启MySQL服务以使更改生效。
    sudo systemctl restart mysqld
    
  4. 验证字符编码和时区:登录MySQL并检查当前的字符编码和时区设置。
    mysql -u root -p
    SHOW VARIABLES LIKE 'character_set_server';
    SHOW VARIABLES LIKE 'time_zone';
    

通过以上步骤,您可以确保MySQL在ARM64架构的CentOS 7上使用正确的字符编码和时区,从而避免数据乱码和时间不一致的问题,提高数据的可靠性和一致性。

四、性能优化与安全设置

4.1 MySQL性能优化的基本策略

在ARM64架构的CentOS 7上成功安装和配置MySQL 5.7后,性能优化是确保数据库高效运行的关键步骤。通过合理的性能优化,可以显著提升数据库的响应速度和处理能力,从而满足高负载和大数据量的应用需求。以下是一些基本的性能优化策略:

1. 调整InnoDB缓冲池大小

InnoDB缓冲池是MySQL中最重要的内存区域之一,用于缓存表数据和索引。合理设置缓冲池大小可以显著提高查询性能。通常情况下,缓冲池大小应设置为系统总内存的70%左右。编辑MySQL配置文件/etc/my.cnf,添加或修改以下配置项:

[mysqld]
innodb_buffer_pool_size = 4G

2. 优化查询缓存

查询缓存可以存储查询结果,当相同的查询再次执行时,直接从缓存中读取结果,从而减少磁盘I/O操作。然而,查询缓存的使用需要谨慎,因为它可能会增加额外的开销。如果应用程序中包含大量动态查询,建议禁用查询缓存。编辑配置文件,添加或修改以下配置项:

[mysqld]
query_cache_type = 0
query_cache_size = 0

3. 调整日志文件大小

MySQL的日志文件(如二进制日志和慢查询日志)对性能也有一定影响。合理设置日志文件的大小可以避免日志文件过大导致的性能下降。编辑配置文件,添加或修改以下配置项:

[mysqld]
binlog_format = ROW
binlog_row_image = MINIMAL
slow_query_log = 1
long_query_time = 2

4. 优化索引

索引是提高查询性能的有效手段。合理设计和使用索引可以显著加快查询速度。建议定期分析表的使用情况,删除不必要的索引,添加缺失的索引。使用以下命令分析表的索引:

ANALYZE TABLE your_table_name;

5. 调整并发连接数

并发连接数的设置直接影响MySQL的性能。根据实际应用的需求,合理设置最大连接数。编辑配置文件,添加或修改以下配置项:

[mysqld]
max_connections = 500

通过以上策略,您可以显著提升MySQL 5.7在ARM64架构的CentOS 7上的性能,确保数据库在高负载和大数据量的情况下依然稳定高效地运行。

4.2 MySQL的安全设置与维护

在现代企业环境中,数据库的安全性至关重要。MySQL 5.7提供了多种安全特性,通过合理的配置和维护,可以有效保护数据的安全性和完整性。以下是一些基本的安全设置与维护策略:

1. 强制密码策略

强制密码策略可以确保用户密码的强度,防止弱密码带来的安全隐患。编辑MySQL配置文件/etc/my.cnf,添加或修改以下配置项:

[mysqld]
validate_password_policy = MEDIUM
validate_password_length = 8
validate_password_mixed_case_count = 1
validate_password_number_count = 1
validate_password_special_char_count = 1

2. 启用审计日志

审计日志可以记录所有对数据库的操作,便于追踪和分析潜在的安全事件。编辑配置文件,添加或修改以下配置项:

[mysqld]
audit_log_format = NEW
audit_log_policy = ALL
audit_log_file = /var/log/mysql/audit.log

3. 限制远程访问

为了防止未经授权的远程访问,建议限制MySQL的远程访问权限。编辑配置文件,添加或修改以下配置项:

[mysqld]
bind-address = 127.0.0.1

4. 定期备份数据

定期备份数据是防止数据丢失的重要措施。建议使用MySQL自带的备份工具mysqldump定期备份数据库。以下是一个简单的备份脚本示例:

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/var/backups/mysql"
mkdir -p $BACKUP_DIR
mysqldump -u root -p'你的密码' --all-databases > $BACKUP_DIR/all_databases_$DATE.sql

5. 更新和补丁管理

及时更新MySQL和操作系统补丁可以修复已知的安全漏洞,确保系统的安全性。使用以下命令更新系统和MySQL:

sudo yum update -y
sudo yum update mysql-community-server -y

通过以上策略,您可以有效提升MySQL 5.7在ARM64架构的CentOS 7上的安全性,确保数据的安全性和完整性,为企业应用提供可靠的保障。

五、常见问题与故障排查

5.1 MySQL常见错误分析与处理

在日常使用MySQL的过程中,难免会遇到各种各样的错误。这些错误可能会导致数据库无法正常运行,影响业务的连续性和稳定性。因此,了解常见的MySQL错误及其处理方法对于数据库管理员来说至关重要。以下是几种常见的MySQL错误及其解决办法:

1. 错误1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

这个错误通常表示MySQL拒绝了用户的登录请求。原因可能是输入的密码不正确,或者用户没有足够的权限。解决方法如下:

  1. 检查密码:确保输入的密码正确无误。如果忘记了密码,可以按照第2.3节中的方法重置密码。
  2. 检查用户权限:登录MySQL后,使用以下命令检查用户权限:
    SHOW GRANTS FOR 'root'@'localhost';
    
    如果权限不足,可以使用以下命令授予所需权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

2. 错误1062 (23000): Duplicate entry '...' for key '...'

这个错误表示在插入数据时,违反了唯一性约束。例如,尝试向一个设置了唯一索引的列插入重复值。解决方法如下:

  1. 检查数据:确保插入的数据不违反唯一性约束。可以使用以下命令查找重复的数据:
    SELECT * FROM your_table_name WHERE column_name = 'value';
    
  2. 修改数据:如果发现重复数据,可以删除或修改重复的数据:
    DELETE FROM your_table_name WHERE column_name = 'value' LIMIT 1;
    

3. 错误1146 (42S02): Table 'database_name.table_name' doesn't exist

这个错误表示尝试访问的表不存在。原因可能是表名拼写错误,或者表已经被删除。解决方法如下:

  1. 检查表名:确保表名拼写正确。可以使用以下命令查看数据库中的所有表:
    SHOW TABLES;
    
  2. 创建表:如果表确实不存在,可以使用以下命令创建表:
    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        ...
    );
    

4. 错误1205 (HY000): Lock wait timeout exceeded; try restarting transaction

这个错误表示事务等待锁超时。原因可能是多个事务同时访问同一资源,导致锁竞争。解决方法如下:

  1. 优化查询:优化查询语句,减少锁的竞争。可以使用以下命令分析查询:
    EXPLAIN SELECT * FROM your_table_name WHERE condition;
    
  2. 增加锁等待时间:如果需要,可以增加锁等待时间。编辑MySQL配置文件/etc/my.cnf,添加或修改以下配置项:
    [mysqld]
    innodb_lock_wait_timeout = 60
    

通过以上方法,您可以有效地解决常见的MySQL错误,确保数据库的稳定运行。

5.2 数据库备份与恢复的方法

数据库备份与恢复是确保数据安全的重要措施。合理的备份策略可以防止数据丢失,而有效的恢复方法可以在数据损坏时迅速恢复业务。以下是几种常用的数据库备份与恢复方法:

1. 物理备份

物理备份是指直接复制数据库文件,包括数据文件、日志文件等。这种方法速度快,但恢复时需要停机。具体步骤如下:

  1. 停止MySQL服务
    sudo systemctl stop mysqld
    
  2. 复制数据文件
    sudo cp -R /var/lib/mysql /path/to/backup
    
  3. 启动MySQL服务
    sudo systemctl start mysqld
    

2. 逻辑备份

逻辑备份是指使用SQL语句导出数据库的结构和数据。这种方法灵活,但速度较慢。常用工具包括mysqldumpmysqlpump。具体步骤如下:

  1. 使用mysqldump备份
    mysqldump -u root -p --all-databases > /path/to/backup/all_databases.sql
    
  2. 使用mysqlpump备份
    mysqlpump -u root -p --all-databases > /path/to/backup/all_databases.sql
    

3. 增量备份

增量备份是指只备份自上次备份以来发生变化的数据。这种方法可以节省存储空间,但恢复时需要依次应用所有增量备份。具体步骤如下:

  1. 启用二进制日志:编辑MySQL配置文件/etc/my.cnf,添加或修改以下配置项:
    [mysqld]
    log_bin = /var/log/mysql/mysql-bin.log
    
  2. 备份二进制日志
    sudo cp /var/log/mysql/mysql-bin.* /path/to/backup
    

4. 恢复方法

恢复数据库时,可以根据备份类型选择不同的方法。具体步骤如下:

  1. 物理备份恢复
    sudo systemctl stop mysqld
    sudo rm -R /var/lib/mysql
    sudo cp -R /path/to/backup/mysql /var/lib/mysql
    sudo systemctl start mysqld
    
  2. 逻辑备份恢复
    mysql -u root -p < /path/to/backup/all_databases.sql
    
  3. 增量备份恢复
    mysqlbinlog /path/to/backup/mysql-bin.000001 | mysql -u root -p
    

通过以上方法,您可以有效地进行数据库备份与恢复,确保数据的安全性和业务的连续性。

六、总结

本文详细介绍了如何在ARM64架构的CentOS 7操作系统上安装和配置MySQL 5.7数据库。通过分析ARM64架构与CentOS 7的兼容性,以及MySQL 5.7的主要特点和支持情况,我们为用户提供了全面的安装前准备工作指南。随后,本文分别介绍了使用YUM仓库和源代码编译两种安装方法,确保用户可以根据自身需求选择合适的安装方式。安装完成后,我们详细讲解了如何配置MySQL的root用户权限、初始化数据库、设置字符编码和时区,以确保数据库的安全性和稳定性。此外,本文还提供了性能优化和安全设置的策略,帮助用户提升数据库的性能和安全性。最后,我们列举了常见的MySQL错误及其解决方法,并介绍了数据库备份与恢复的方法,确保用户在遇到问题时能够迅速应对。通过本文的指导,用户可以在ARM64架构的CentOS 7上顺利安装和配置MySQL 5.7,为企业的数据管理和应用开发提供强大的支持。