MySQL5.7在CentOS7下安装,配置,调优

本文详细介绍在CentOS系统中卸载MariaDB,安装MySQL 5.7.16,进行数据库初始化,修改默认端口,以及如何解决安装过程中遇到的依赖问题。

1、卸载系统自带的 mariadb-lib
[root@centos-linux ~]# rpm -qa | grep mariadb
 mariadb-libs-5.5.44-2.el7.centos.x86_64 
[root@centos-linux ~]# rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps

2、下载mysql5.7.16 rpm安装包,官网最新的mysql安装包是mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar下载地址

[root@centos-linux ~]# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

然后解压
 [root@linux_node_1 src]# tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar 
  mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
  mysql-community-devel-5.7.16-1.el7.x86_64.rpm
  mysql-community-minimal-debuginfo-5.7.16-1.el7.x86_64.rpm
  mysql-community-libs-5.7.16-1.el7.x86_64.rpm
  mysql-community-common-5.7.16-1.el7.x86_64.rpm
  mysql-community-embedded-compat-5.7.16-1.el7.x86_64.rpm
  mysql-community-test-5.7.16-1.el7.x86_64.rpm
  mysql-community-embedded-devel-5.7.16-1.el7.x86_64.rpm
  mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm
  mysql-community-server-5.7.16-1.el7.x86_64.rpm
  mysql-community-client-5.7.16-1.el7.x86_64.rpm
  mysql-community-embedded-5.7.16-1.el7.x86_64.rpm

3、安装
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
[root@centos-linux ~]# rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
[root@centos-linux ~]# rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 
[root@centos-linux ~]# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

如果在安装rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm的时候报错如下:
  [root@linux_node_1 src]# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm 
  warning: mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
  error: Failed dependencies:
  libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
  libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
  libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.16-1.el7.x86_64
  net-tools is needed by mysql-community-server-5.7.16-1.el7.x86_64

  这个报错的意思是需要安装libaio包和net-tools包:可以yum安装一下,安装 libaio-0.3.107-10.el6.x86_64.rpm,

4、数据库初始化
mysqld --initialize --user=mysql

修改mysql默认端口号3306
vim /etc/my.cnf
[mysqld]
port=3307
max_allowed_packet = 40M
back_log = 510
key_buffer_size = 256M
sort_buffer_size = 6M
read_buffer_size = 4M
join_buffer_size = 8M
max_connections = 768
innodb_buffer_pool_size = 1500M
query_cache_size = 512M 
query_cache_type = 1 


(上面的参数设置末默认值大,可以提高mysql性能。参数查看说明:
缓存命中状态看show status like '%Qcache%'中的:
Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。 
查看普通参数用show variables like ,例如:show variables like 'back_log';)

安装rpm包后查看mysql的root的密码

  [root@linux_node_1 src]# cat /var/log/mysqld.log 
  2016-12-07T04:41:58.028558Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  2016-12-07T04:41:58.315188Z 0 [Warning] InnoDB: New log files created, LSN=45790
  2016-12-07T04:41:58.355114Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
  2016-12-07T04:41:58.418448Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 7cc98831-bc37-11e6-a263-000c29f902dc.
  2016-12-07T04:41:58.419935Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
  2016-12-07T04:41:58.420558Z 1 [Note] A temporary password is generated for root@localhost: )1r3gi,hjgQa
  
现在启动mysql数据库systemctl restart mysqld.service

然后 mysql -uroot -p
这里的密码为上面文件中的密码:)1r3gi,hjgQa

登陆后要修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'csdn@2018';

允许root用户远程登录mysql数据库

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'csdn@2018' WITH GRANT OPTION;

FLUSH PRIVILEGES;

<think> 嗯,用户需要了解在CentOS 9系统上安装MySQL 5.7的详细步骤。首先,我需要确认CentOS 9是否原生支持MySQL 5.7。根据经验,较新的操作系统版本通常默认支持更新的软件版本,可能MySQL 5.7CentOS 9的官方仓库中不可用。 回顾用户提供的引用内容,引用[1]和[2]提到在CentOS 7安装MySQL 5.7和8.0的步骤,引用[3]和[4]则涉及CentOS 6.9的安装。这说明用户可能混淆了不同CentOS版本的环境。CentOS 9作为较新版本,其官方仓库可能只提供MySQL 8.0或更高版本。 接下来,考虑可能的解决方案:建议用户使用官方MySQL Yum仓库,并选择适合的版本。虽然CentOS 9默认仓库可能没有MySQL 5.7,但MySQL官方通常维护旧版本的支持。需要确认MySQL官网是否提供针对CentOS 9的5.7版本仓库配置。 然后,安装步骤应包含:添加MySQL仓库、启用MySQL 5.7子仓库、禁用默认模块、安装服务器并初始化。其中安全初始化是关键步骤,包括设置root密码和移除匿名用户等安全措施。 用户可能遇到的常见问题包括:依赖冲突(如MariaDB残留)、GPG密钥验证失败、服务启动失败等。需要准备相应的故障排除建议,如彻底移除旧安装、检查SELinux状态等。 最后,要强MySQL 5.7CentOS 9上的兼容性风险,建议用户评估升级到MySQL 8.0的可能性。同时提供替代方案(如Docker安装)作为备选。 </think>在 CentOS 9 Stream 上安装 MySQL 5.7 需要手动添加 MySQL 官方仓库并禁用系统默认的 MySQL 模块,因为 CentOS 9 默认仓库通常只提供更新版本的 MySQL (如 8.0)。以下是详细步骤: ### 📌 步骤 1: 添加 MySQL 5.7 Yum 仓库 1. **下载 MySQL Yum 仓库安装包**: ```bash sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm ``` *(此包包含 MySQL 8.0 和 5.7 的仓库配置)* 2. **禁用默认的 MySQL 8.0 模块** (CentOS 9 默认启用): ```bash sudo dnf module disable mysql ``` 3. **启用 MySQL 5.7 仓库**: ```bash sudo dnf config-manager --enable mysql57-community ``` 4. **禁用 MySQL 8.0 仓库**: ```bash sudo dnf config-manager --disable mysql80-community ``` *(验证: `sudo dnf repolist enabled | grep mysql` 应只显示 `mysql57-community`)* ### ⚙ 步骤 2: 安装 MySQL 5.7 服务器 ```bash sudo dnf install mysql-community-server ``` *系统会自动解决依赖并安装 MySQL 5.7 的核心组件。* ### 🔧 步骤 3: 启动 MySQL 服务并设置开机自启 ```bash sudo systemctl start mysqld # 启动服务 sudo systemctl enable mysqld # 开机自启 sudo systemctl status mysqld # 检查状态 ``` ### 🔐 步骤 4: 获取并修改 root 初始密码 1. **查找临时密码**: ```bash sudo grep 'temporary password' /var/log/mysqld.log ``` *输出类似:`[Note] A temporary password is generated for root@localhost: JqkRg4wxaY.O`* 2. **运行安全初始化脚本**: ```bash sudo mysql_secure_installation ``` - 输入上一步获取的临时密码 - 设置新的强密码 (包含大小写字母、数字、符号) - 移除匿名用户 (`Y`) - 禁止 root 远程登录 (`Y`,按需选择) - 删除测试数据库 (`Y`) - 立即重载权限表 (`Y`) ### ✅ 步骤 5: 验证安装 ```bash mysql -u root -p ``` 输入新设置的密码后,进入 MySQL 命令行,执行: ```sql SELECT VERSION(); ``` 应显示 `5.7.x` 版本信息。 --- ### ⚠ 重要注意事项 1. **兼容性警告**:MySQL 5.7CentOS 9 上**非官方原生支持**,可能遇到未测试的依赖或行为差异。生产环境强烈建议评估升级到 MySQL 8.0 或使用兼容性更好的 OS (如 CentOS 7)。 2. **依赖冲突**:如果之前安装MariaDB 或其他 MySQL 版本,务必先彻底卸载 (`sudo dnf remove mariadb* mysql*` 并删除 `/var/lib/mysql` 目录)。 3. **SELinux/防火墙**: - SELinux 可能需整策略:`sudo setenforce 0` (临时) 或修改 `/etc/selinux/config` (永久)。 - ️ 防火墙开放 3306 端口:`sudo firewall-cmd --add-port=3306/tcp --permanent && sudo firewall-cmd --reload` --- ### 💡 替代方案 1. **使用 Docker 容器**:更干净的隔离方案 ```bash docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=yourpassword -d -p 3306:3306 mysql:5.7 ``` 2. **升级到 MySQL 8.0**:CentOS 9 默认仓库支持,直接安装: ```bash sudo dnf install mysql-server ``` > 📌 **引用说明**:虽然您提供的引用主要针对 CentOS 6/7 [^1][^2][^3][^4],但其核心原理(如 RPM 安装、安全初始化)仍适用。CentOS 9 的关键区别在于**必须通过禁用模块和手动启用旧版仓库**来覆盖默认配置--- **相关问题** 1. MySQL 5.7 和 8.0 的主要兼容性差异有哪些? 2. 如何在 CentOS 9 上配置 MySQL 主从复制? 3. MySQL 安装后如何进行性能? 4. 使用 Docker 运行 MySQL 有哪些缺点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值