MySQL5.7安装、启动报错解决方法集合

博客主要围绕MySQL展开,介绍了InnoDB服务器退出、与sql_mode=only_full_group_by不兼容等报错详情及解决办法,如查看和修改sql_mode、修改配置文件并重启服务等,还提及了初始化报错及对应启动命令和各报错的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

InnoDB: Server exits.

报错详情

2019-11-11T04:36:44.028428Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-11-11T04:36:44.028552Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2019-11-11T04:36:44.028586Z 0 [Note] /usr/local/mysql5.7/bin/mysqld (mysqld 5.7.26) starting as process 2645 ...
2019-11-11T04:36:44.034436Z 0 [Note] InnoDB: PUNCH HOLE support available
2019-11-11T04:36:44.034480Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-11-11T04:36:44.034489Z 0 [Note] InnoDB: Uses event mutexes
2019-11-11T04:36:44.034495Z 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2019-11-11T04:36:44.034501Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-11-11T04:36:44.034507Z 0 [Note] InnoDB: Using Linux native AIO
2019-11-11T04:36:44.035118Z 0 [Note] InnoDB: Number of pools: 1
2019-11-11T04:36:44.035260Z 0 [Note] InnoDB: Using CPU crc32 instructions
2019-11-11T04:36:44.037380Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2019-11-11T04:36:44.047057Z 0 [Note] InnoDB: Completed initialization of buffer pool
2019-11-11T04:36:44.049625Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-11-11T04:36:44.062850Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2019-11-11T04:36:44.067094Z 0 [ERROR] InnoDB: Trying to access page number 4294967295 in space 0, space name innodb_system, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
2019-11-11T04:36:44.067117Z 0 [ERROR] InnoDB: Server exits.

解决方法:
参考:

cd /var/lib/mysql #进入mysql库目录
mkdir old #创建一个备份目录
mv ib* old #将ib库移入备份目录
/etc/init.d/mysql start #启动MySQL

this is incompatible with sql_mode=only_full_group_by

报错详情

this is incompatible with sql_mode=only_full_group_by

解决方法:
1、查看当前sql_mode

select @@GLOBAL.sql_mode;

在这里插入图片描述
2、修改配置文件my.cnf,末尾加上该行代码之后,重启MySQL服务。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

3、再次查看sql_mode
在这里插入图片描述

初始化报错

启动命令

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data

报错一:

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法

yum install -y libaio

报错二:

./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

解决方法

yum -y install numactl.x86_64

报错三:

2019-06-21T09:17:21.968768Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-06-21T09:17:21.974348Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2019-06-21T09:17:21.974380Z 0 [Note] ./mysqld (mysqld 5.7.26) starting as process 85 ...
2019-06-21T09:17:21.977921Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

2019-06-21T09:17:21.977946Z 0 [ERROR] Aborting

2019-06-21T09:17:21.977963Z 0 [Note] Binlog end
2019-06-21T09:17:21.979436Z 0 [Note] ./mysqld: Shutdown complete

解决方法

通过在命令后面加上--user=root 进行强制使用root账号启动

报错四:

2019-06-21T09:22:43.246267Z 0 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2019-06-21T09:22:43.259726Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2019-06-21T09:22:43.260023Z 0 [ERROR] Too many arguments (first extra is '–initialize').
2019-06-21T09:22:43.260031Z 0 [Note] Use --verbose --help to get a list of available options!
2019-06-21T09:22:43.260060Z 0 [ERROR] Aborting

解决方法

1、删除 rm -rf /usr/local/mysql-5.7/data/*
2、执行表初始化命令 ./mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data
3、初始化 ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/usr/local/mysql-5.7/data --user=root
<think>首先,用户的问题是:“我想在CentOS7系统上离线安装MySQL请问CentOS7离线安装MySQL步骤”。这是一个关于在CentOS7上离线安装MySQL的步骤查询。我需要参考提供的引用,这些是站内引用,但它们似乎是关于MySQL安装的,但版本不同。用户没有指定MySQL版本,所以我应该考虑常见版本,比如MySQL5.7或8.0。从引用中看,有提到MySQL5.7和8.0。引用内容:-[^1]:CentOS7离线安装Mysql5.7(rpm)-[^2]:centos7离线安装mysql8.0.39-[^3]:centos7离线安装MySQL8-[^4]:Centos7离线安装mysql8步骤-[^5]:CentOs7离线安装MySQL5.7用户的问题是“MySQL”,没有指定版本。我应该基于这些引用提供通用的步骤,并注意版本差异。系统指令:-所有行内数学表达式用$...$,但这里可能不涉及数学,所以可能不需要。-独立公式用$$...$$并单独成段,同样,可能不适用。-LaTeX语法正确:在回答中,如果有数学,要用LaTeX,但这里主要是文本。-使用中文回答:整个回答必须用中文。-生成相关问题:在回答结束后,生成相关问题。-在引用的段落末尾添加引用标识:如[^1],但用户提供的是参考引用,我需要在实际回答中引用它们。-回答结构清晰:帮助用户逐步解决问题,保证真实可靠。用户可见层指令:回答结构清晰,逐步解决问题,真实可靠。所以,我的回答应该:1.介绍步骤。2.分步解释如何离线安装MySQL在CentOS7上。3.基于引用,覆盖常见问题如卸载旧版本、依赖处理等。4.结束时生成相关问题。步骤概要(基于引用):-准备MySQLRPM包(离线下载)。-检查并卸载旧版本(如MariaDB)。-安装依赖(如果需要)。-按顺序安装RPM包。-启动MySQL服务。-设置root密码。-配置防火墙(可选)。从引用[^3],提到有依赖问题,如mariadb-libs冲突,需要先卸载。从引用[^5],安装顺序是common,libs,client,server。对于MySQL8,引用[^3]有类似步骤。用户没有指定版本,我应该提供通用步骤,并提到版本差异。回答结构:1.引言:简要说明离线安装的准备工作。2.步骤:分步描述。3.结束:生成相关问题。生成相关问题:如安装不同版本、常见错误解决等。现在,构建回答。第一步:准备工作-下载MySQLRPM包。离线安装需要提前下载所有RPM包。用户可以从MySQL官网下载适合CentOS7的版本。例如,对于MySQL5.7或8.0。第二步:卸载旧版本-检查并卸载MariaDB或旧MySQL。引用[^3]提到rpm-e--nodepsmariadb-libs。第三步:安装依赖(可选)-引用[^4]提到可能需要安装autoconf、Perl、openssl等,但根据引用,RPM安装可能不需要额外依赖,除非有错误。第四步:安装RPM包-顺序安装:common,libs,client,server。参考引用[^5]。-对于MySQL8,引用[^3]类似。第五步:启动服务-systemctlstartmysqld-systemctlenablemysqld第六步:设置root密码-引用[^1]提到登陆mysql修改密码。-对于MySQL5.7,初始密码在日志中;对于8.0,可能有临时密码。第七步:配置(可选)-防火墙:引用[^1]提到关闭防火墙或添加规则。在回答中,引用来源:在相关步骤末尾添加[^n]。例如,提到卸载MariaDB时,加[^3]。现在,写回答。</think>### CentOS 7 离线安装 MySQL 步骤 在 CentOS 7 系统上离线安装 MySQL,需要提前下载 MySQL 的 RPM 安装包(例如 MySQL 5.7 或 8.0),并确保处理依赖冲突(如系统自带的 MariaDB)。以下是基于可靠参考的详细步骤。整个过程分为准备、安装、配置三个阶段,适用于常见 MySQL 版本(以 MySQL 5.7 和 8.0 为例)。关键步骤基于 RPM 包安装方式[^1][^2][^5]。 #### 准备工作 1. **下载 MySQL RPM 包**: - 在联网环境下,从 [MySQL 官网下载页面](https://dev.mysql.com/downloads/mysql/) 选择适合 CentOS 7 的版本(例如 MySQL 5.7 或 8.0)。 - 下载完整的 RPM 包集合(通常是一个 `.tar.gz` 压缩包,包含 `mysql-community-server`, `mysql-community-client` 等组件)。例如: - MySQL 5.7:下载 `mysql-5.7.xx-1.el7.x86_64.rpm-bundle.tar`[^5]。 - MySQL 8.0:下载 `mysql-8.0.xx-1.el7.x86_64.rpm-bundle.tar`[^2][^3]。 - 将下载的压缩包传输到 CentOS 7 离线机器(如通过 USB 或 SFTP)。 2. **检查系统版本**: - 确保系统为 CentOS 7:运行 `cat /etc/redhat-release` 验证版本。 - 创建安装目录(例如 `/usr/local/mysql`),并将压缩包解压至此: ```bash mkdir /usr/local/mysql tar -zxvf mysql-*.tar.gz -C /usr/local/mysql # 替换 * 为实际文件名 ``` 参考[^2][^4]。 #### 安装步骤 3. **卸载旧版本 MariaDB 或 MySQL**: - CentOS 7 默认安装 MariaDB,可能与 MySQL 冲突。先检查并强制卸载: ```bash rpm -qa | grep mariadb # 检查 MariaDB 包 rpm -e --nodeps mariadb-libs-* # 强制卸载(替换 * 为实际版本) ``` 如果存在旧 MySQL,也卸载:`rpm -e mysql-*`。此步骤避免依赖错误[^3][^5]。 4. **安装 RPM 包(按顺序)**: - 进入解压目录:`cd /usr/local/mysql`。 - **安装顺序至关重要**(依赖关系): ```bash rpm -ivh mysql-community-common-*.rpm rpm -ivh mysql-community-libs-*.rpm rpm -ivh mysql-community-client-*.rpm rpm -ivh mysql-community-server-*.rpm ``` - 对于 MySQL 8.0,包名类似 `mysql-community-libs-8.0*.rpm`[^3]。 - 如果报错(如缺少依赖),需离线安装依赖包(如 `autoconf` 或 `openssl`,但 RPM 方式通常无需额外依赖)[^4][^5]。 5. **启动 MySQL 服务**: - 初始化并启动服务: ```bash systemctl start mysqld # 启动服务 systemctl enable mysqld # 设置开机自启 ``` - 检查状态:`systemctl status mysqld`,确保显示 `active (running)`。 #### 配置步骤 6. **设置 root 密码**: - MySQL 5.7:初始密码在日志中,获取并登录: ```bash grep 'temporary password' /var/log/mysqld.log # 获取临时密码 mysql -u root -p # 使用临时密码登录 ``` - MySQL 8.0:类似,但可能需要运行安全脚本 `mysql_secure_installation`。 - 登录后修改密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; # 替换 your_new_password FLUSH PRIVILEGES; ``` 参考[^1][^3]。 7. **配置防火墙(可选)**: - 允许 MySQL 默认端口(3306): ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` - 或临时关闭防火墙(仅测试环境):`systemctl stop firewalld`[^1]。 #### 验证安装 - 运行 `mysql -u root -p` 输入密码登录。 - 执行简单查询:`SHOW DATABASES;`,确认正常输出。 - 常见问题: - **依赖错误**:如安装 `mysql-community-libs` 时报错,确保已卸载 MariaDB(步骤 3)[^3]。 - **密码问题**:如果忘记临时密码,检查 `/var/log/mysqld.log` 或重置(需停止服务后启动 `mysqld_safe --skip-grant-tables`)。 以上步骤基于 CentOS 7 的常见实践,覆盖 MySQL 5.7 和 8.0。安装包版本需一致,避免混合使用不同版本 RPM 包[^2][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值