﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MySQL - Linux迷</title>
	<atom:link href="https://www.linuxmi.com/mysql/feed" rel="self" type="application/rss+xml" />
	<link>https://www.linuxmi.com</link>
	<description>分享Linux和编程</description>
	<lastBuildDate>Tue, 12 Aug 2025 09:07:11 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://www.linuxmi.com/wp-content/uploads/2020/02/cropped-Favicon-32x32.png</url>
	<title>MySQL - Linux迷</title>
	<link>https://www.linuxmi.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MariaDB 12.0 正式发布：更稳定、更高效、支持更多平台</title>
		<link>https://www.linuxmi.com/mariadb-12-0.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mariadb-12-0</link>
					<comments>https://www.linuxmi.com/mariadb-12-0.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Tue, 12 Aug 2025 09:07:11 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[资讯]]></category>
		<category><![CDATA[MariaDB]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=26782</guid>

					<description><![CDATA[<p>MariaDB 12.0 是这款广受欢迎的开源数据库的最新稳定版本，已经正式对外发布。本次更新带来了 &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mariadb-12-0.html">MariaDB 12.0 正式发布：更稳定、更高效、支持更多平台</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p data-start="34" data-end="163">MariaDB 12.0 是这款广受欢迎的开源数据库的最新稳定版本，已经正式对外发布。本次更新带来了大量关键的错误修复、性能提升以及更广泛的平台支持。值得提醒的是，12.0 采用滚动更新机制，想要体验最新特性的用户，建议在 12.1.2 版本发布后尽快升级。</p>
<p data-start="34" data-end="163"><img fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-26784" src="https://www.linuxmi.com/wp-content/uploads/2025/08/mariadb-12-0-1.png" alt="" width="1920" height="1080" /></p>
<h3 data-start="165" data-end="185">存储引擎大升级，提升稳定性和性能</h3>
<p data-start="187" data-end="222">此次更新重点聚焦于存储引擎的优化，尤其是 InnoDB 和 Aria。</p>
<p data-start="224" data-end="385">针对 InnoDB，开发团队修复了自适应哈希索引损坏的问题，以及缓冲池缩小时可能引发的异常情况，避免了服务器在特定内存压力下挂起的风险。新增的 <code data-start="296" data-end="314">innodb_linux_aio</code> 参数，可以根据 Linux 环境智能选择使用现代的 <code data-start="341" data-end="351">io_uring</code> 接口或传统的 <code data-start="359" data-end="367">libaio</code>，这让 I/O 性能更出色且更稳定。</p>
<p data-start="224" data-end="385"><img decoding="async" class="alignnone size-full wp-image-26783" src="https://www.linuxmi.com/wp-content/uploads/2025/08/mariadb-12-0-2.png" alt="" width="1920" height="1080" /></p>
<p data-start="387" data-end="450">Aria 存储引擎也获得了多项修复，例如解决了在包含向量索引的表上添加外键时可能出现的错误，进一步增强了引擎的健壮性和兼容性。</p>
<p data-start="452" data-end="575">此外，MariaDB 12.0 还修正了在使用 <code data-start="476" data-end="488">USING HASH</code> 添加 UNIQUE 约束时，可能导致带有外键的表结构损坏的复杂边缘问题。对于大量依赖分区表的用户来说，修复了分区表转换操作后导致副本崩溃的严重问题，确保了数据的安全与一致。</p>
<h3 data-start="577" data-end="591">集群与备份功能更完善</h3>
<p data-start="593" data-end="700">集群方案中，Galera 版本升级到 26.4.23，增强了对 OpenZFS 2.3.0 及以上版本的支持，带来更好的存储兼容性。同时，解决了半同步复制模式下，停止副本时主节点无响应的长期困扰，集群管理更加顺畅。</p>
<p data-start="702" data-end="777">备份工具 mariabackup 也得到优化，尤其是在处理复杂 Aria 表结构时表现更好，有效避免了复制不匹配等常见错误，提升了备份和恢复的可靠性。</p>
<h3 data-start="779" data-end="795">优化器与 SQL 层修复</h3>
<p data-start="797" data-end="881">高级用户会注意到，MariaDB 12.0 在查询优化器和 SQL 处理层面也有不少改进。例如，修复了无名列派生表的异常行为，优化了索引合并计划，使查询执行更高效准确。</p>
<p data-start="883" data-end="942">特别值得关注的是，解决了分析包含 UTF-8 字符的表时可能导致无限循环和内存泄漏的严重漏洞，让系统运行更加安全稳定。</p>
<h3 data-start="944" data-end="955">平台支持再扩展</h3>
<p data-start="957" data-end="1009">MariaDB 12.0 在兼容性上也有很大进步，现在正式支持更多主流 Linux 发行版和架构，包括：</p>
<ul data-start="1011" data-end="1168">
<li data-start="1011" data-end="1024">
<p data-start="1013" data-end="1024">Fedora 42</p>
</li>
<li data-start="1025" data-end="1094">
<p data-start="1027" data-end="1094">Red Hat Enterprise Linux 10（支持 x86_64、aarch64、ppc64le 和 s390x 架构）</p>
</li>
<li data-start="1095" data-end="1116">
<p data-start="1097" data-end="1116">SLES 15 SP6 和 SP7</p>
</li>
<li data-start="1117" data-end="1148">
<p data-start="1119" data-end="1148">Ubuntu 25.04（Plucky Puffin）</p>
</li>
<li data-start="1149" data-end="1168">
<p data-start="1151" data-end="1168">Debian 13（Trixie）</p>
</li>
</ul>
<p data-start="1170" data-end="1311">需要注意的是，MariaDB 12.0 是 Ubuntu 24.10 系列的最后支持版本，Ubuntu 24.10 将于 2025 年 7 月停止标准支持。此外，针对 CentOS Stream 9 用户，之前缺失的 <code data-start="1279" data-end="1301">MariaDB-provider-lzo</code> 软件包已补充完善。</p>
<hr data-start="1313" data-end="1316" />
<h3 data-start="1318" data-end="1324">总结</h3>
<p data-start="1326" data-end="1443">MariaDB 12.0 是一次专注于“稳定性”和“性能”的重要升级，尤其在存储引擎、集群复制和备份管理等核心领域带来了实实在在的改进。新增的智能 I/O 参数和更完善的错误修复，为数据库管理员和开发者们提供了更可靠、高效的运行环境。</p>
<p data-start="1445" data-end="1538">同时，更广泛的平台支持也让 MariaDB 能够适应更多企业和用户的多样化需求。作为一个成熟的开源数据库，MariaDB 12.0 继续推动着数据库技术的发展，并保持其在业界的重要地位。</p>
<p data-start="1540" data-end="1605">如果你正在使用 MariaDB，或者计划选择一款稳定、功能丰富的数据库解决方案，MariaDB 12.0 是值得关注和升级的版本。</p>
<p data-start="1607" data-end="1636" data-is-last-node="" data-is-only-node="">更多详细内容，可以访问 MariaDB 官方<a href="https://mariadb.com/docs/release-notes/community-server/release-notes-mariadb-12.0-rolling-releases/mariadb-12.0.2-release-notes" target="_blank" rel="nofollow noopener">发布公告</a>查看。</p>
<p data-start="1607" data-end="1636" data-is-last-node="" data-is-only-node=""><span style="color: #ff0000;"><strong>需要在最新的 Debian 13 中安装 MariaDB 12 的一键安装脚本的联系V：linuxgs</strong></span></p><p>The post <a href="https://www.linuxmi.com/mariadb-12-0.html">MariaDB 12.0 正式发布：更稳定、更高效、支持更多平台</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mariadb-12-0.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 9.1 发布：全新特性与重要改进</title>
		<link>https://www.linuxmi.com/mysql-9-1.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-9-1</link>
					<comments>https://www.linuxmi.com/mysql-9-1.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Tue, 22 Oct 2024 00:59:17 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[资讯]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=25576</guid>

					<description><![CDATA[<p>MySQL 9.1 现已正式发布，这是一款被广泛使用的开源关系数据库管理系统（RDBMS），在全球范 &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mysql-9-1.html">MySQL 9.1 发布：全新特性与重要改进</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>MySQL 9.1 现已正式发布，这是一款被广泛使用的开源关系数据库管理系统（RDBMS），在全球范围内支持着各种规模的应用和服务。这一版本的更新带来了多项显著的改进和新功能，旨在提升性能、安全性和用户体验，同时也宣布了一些特性的弃用，以便在不断变化的技术环境中保持灵活性和高效性。</p>
<p>新版本中，引入的功能和改进包括更高效的查询处理、更强大的数据加密选项以及增强的并发处理能力，使得开发者和管理员能够更轻松地管理和优化数据库性能。此外，一些较旧的特性将被弃用，这一决定旨在推动系统向更现代的架构转型，从而减少维护负担并提升未来的可扩展性。</p>
<p>在本文中，我们将详细介绍这些变化和新功能，帮助你全面了解 MySQL 9.1 的优势与潜力，使你能够更好地利用这一强大的数据库管理系统来支持你的项目和业务需求。无论是开发新应用程序还是优化现有系统，了解这些更新将对你大有裨益。</p>
<p><img decoding="async" class="alignnone size-full wp-image-25577" src="https://www.linuxmi.com/wp-content/uploads/2024/10/mysql-9-1.png" alt="" width="1920" height="1080" /></p>
<h2>触发器处理的优化</h2>
<p>在早期版本中，每次访问表时，相关的触发器都会被完全加载和解析，即使是简单的只读操作如 SELECT。这种做法不仅浪费了内存，还无谓地增加了查询的执行时间。而在 MySQL 9.1 中，触发器的处理方式进行了优化，分为两个阶段。现在，系统首先只读取触发器的元数据，真正的解析则推迟到需要修改数据时。这一改进显著减少了只读查询的资源消耗，提升了整体性能。</p>
<h2>增强的监控与查询优化</h2>
<p>新的服务器状态变量如 <code>Table_open_cache_triggers_hits</code> 和 <code>Table_open_cache_triggers_misses</code> 旨在跟踪触发器的缓存使用情况，从而增强了监控能力。对于开发者来说，理解查询执行计划至关重要。MySQL 9.1 中的 <code>EXPLAIN</code> 命令经过多次更新，输出格式现在更为一致，包含有关多范围读取、半连接策略和条件字符串的详细信息。这将帮助开发者更深入地分析和优化查询性能。</p>
<h2>新的视图创建功能</h2>
<p>MySQL 9.1 还引入了在 <code>CREATE VIEW</code> 语句中支持 <code>IF NOT EXISTS</code> 子句。这个新特性意味着用户在创建视图时无需担心视图是否已存在，如果视图已经存在，系统只会发出警告，而不会报错，这大大简化了视图的管理。</p>
<h2>崩溃安全的数据库操作</h2>
<p>此版本还增强了数据库操作的安全性，引入了崩溃安全的 <code>CREATE DATABASE</code> 和 <code>DROP DATABASE</code> 语句。只要使用支持原子 DDL 操作的存储引擎（如 InnoDB），这些操作将完全事务化。这一改进意味着在数据库创建或删除过程中，即使发生意外服务器关闭或错误，系统也能避免数据不一致的问题。</p>
<h2>支持 JavaScript 存储程序与高级向量操作</h2>
<p>在灵活性方面，MySQL 9.1 现在支持在 JavaScript 存储程序中使用 VECTOR 数据类型。这一新增功能让开发者可以在存储过程的输入和输出参数中使用 VECTOR 值，特别适合需要进行高级向量操作的应用程序。</p>
<h2>企业级功能与身份验证增强</h2>
<p>对于 MySQL Enterprise 用户，新引入的复制应用程序指标极大提升了复制过程的可观察性。管理员现在能够更高效地监控复制进度，收集有用的统计数据，方便故障排除和维护稳定的复制环境。此外，MySQL 9.1 现在支持 OpenID Connect，增强了身份验证的灵活性，并与现代单点登录系统集成，使用户管理在大规模环境中更加顺畅。</p>
<h2>选项监控与功能弃用</h2>
<p>新的选项跟踪器组件帮助监控 MySQL 服务器的选项，包括与已安装插件和组件相关的选项。该组件也属于 MySQL 企业版的一部分，为用户提供对所有启用选项的清晰视图。</p>
<p>尽管 MySQL 9.1 引入了众多实用的新功能，但也标志着某些元素的弃用。一些功能被标记为弃用，意味着它们将在未来的版本中被移除，因此开发者应开始更新应用程序，以避免依赖这些即将消失的功能。此外，部分功能在 MySQL 9.1 中已被移除，这可能会影响旧应用程序，因此数据库管理员应审查现有应用对 MySQL 9.0 功能的使用，确保在迁移至 9.1 之前保持兼容性。</p>
<h2>总结</h2>
<p>MySQL 9.1 是一次重要的更新，带来了众多新特性和性能优化，特别是在触发器处理、监控功能和数据库操作安全性等方面的显著提升。这些变化不仅帮助开发者更高效地管理数据库，还增强了整体的用户体验。若想了解更详细的信息，请查看<a href="https://dev.mysql.com/doc/refman/9.1/en/mysql-nutshell.html" target="_blank" rel="nofollow noopener">发布说明</a>或访问<a href="https://dev.mysql.com/doc/relnotes/mysql/9.1/en/news-9-1-0.html" target="_blank" rel="nofollow noopener">官方文档</a>，探索此次版本带来的所有新特性。</p><p>The post <a href="https://www.linuxmi.com/mysql-9-1.html">MySQL 9.1 发布：全新特性与重要改进</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mysql-9-1.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 9.0 重磅发布，性能飞跃迈向数据库新时代</title>
		<link>https://www.linuxmi.com/mysql-9-0.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-9-0</link>
					<comments>https://www.linuxmi.com/mysql-9-0.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Wed, 03 Jul 2024 07:31:19 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL 9.0]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=24909</guid>

					<description><![CDATA[<p>MySQL，这个广受欢迎的开源关系数据库管理系统，正式发布了 9.0 版本。本次发布不仅延续了 My &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mysql-9-0.html">MySQL 9.0 重磅发布，性能飞跃迈向数据库新时代</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>MySQL，这个广受欢迎的开源关系数据库管理系统，正式发布了 9.0 版本。本次发布不仅延续了 MySQL 一贯的稳定性和高性能，还引入了许多新功能和改进，进一步提升了其在现代数据库管理中的地位。同时，本次更新也弃用了一些旧功能，并移除了过时的组件，以确保系统的简洁性和效率。</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-24910 aligncenter" src="https://www.linuxmi.com/wp-content/uploads/2024/07/mysql-9-0.png" alt="" width="1920" height="1080" /></p>
<p style="text-align: center;">Ubuntu 24.04 中的 MySQL 9.0 截图</p>
<p>以下是具体内容。</p>
<h4>MySQL 9.0 的新功能</h4>
<p><strong>1. 高级 JSON 数据处理</strong></p>
<p>MySQL 9.0 的一大亮点是对 JSON 数据的高级处理。用户现在可以将 EXPLAIN ANALYZE 命令的 JSON 输出直接保存到用户变量中。这一功能通过 <code>EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt</code> 语法实现，增强了查询调试和优化的能力，使执行计划的操作和分析变得更加容易。</p>
<p><strong>2. 预处理语句扩展</strong></p>
<p>MySQL 9.0 扩展了预处理语句的功能，支持数据定义语言（DDL）命令，如 <code>CREATE EVENT</code>、<code>ALTER EVENT</code> 和 <code>DROP EVENT</code>。虽然这些更新使数据库管理脚本更加动态和灵活，但它们不支持位置参数，并且需要从各种输入源组装语句文本。</p>
<p><strong>3. 性能模式（Performance Schema）新表</strong></p>
<p>为了提供详细的数据库操作见解，MySQL 9.0 在性能模式中引入了两个新表：“variables_metadata”和“global_variable_attributes”。这些表提供了有关系统变量的全面信息，包括类型、范围和允许值，这对于微调和维护系统性能至关重要。</p>
<h4>弃用功能</h4>
<p><strong>1. “variables_info” 表的 “MIN_VALUE” 和 “MAX_VALUE” 列</strong></p>
<p>在新功能的推出伴随着旧功能的逐步淘汰。MySQL 9.0 弃用了性能模式中的 “variables_info” 表中的 “MIN_VALUE” 和 “MAX_VALUE” 列。这些列现在被新的 “variables_metadata” 表中的类似列所取代。</p>
<h4>移除的组件</h4>
<p><strong>1. mysql_native_password 认证插件</strong></p>
<p>在功能移除方面，MySQL 9.0 最引人注目的变化是移除了 <code>mysql_native_password</code> 认证插件，该插件在 8.0 版本中已被弃用。这意味着服务器将拒绝缺乏 <code>CLIENT_PLUGIN_AUTH</code> 能力的旧客户端程序的认证请求。这一变化是 MySQL 提升安全性和鼓励用户采用更安全认证方法的一部分。</p>
<h3>总结</h3>
<p>MySQL 9.0 的发布标志着这一开源数据库管理系统的又一次重要升级。通过引入新的功能和优化，MySQL 9.0 为开发者和数据库管理员提供了更强大的工具，满足了现代应用对高性能和高可靠性的需求。同时，通过弃用和移除旧功能，MySQL 9.0 确保了系统的简洁性和效率，为用户带来更好的使用体验。随着这一版本的发布，MySQL 将继续在全球范围内为各种规模和类型的应用提供强有力的支持。</p>
<p>有关所有更改的详细信息，请查看<a href="https://dev.mysql.com/doc/relnotes/mysql/9.0/en/" target="_new" rel="noreferrer noopener">发行说明</a>。</p><p>The post <a href="https://www.linuxmi.com/mysql-9-0.html">MySQL 9.0 重磅发布，性能飞跃迈向数据库新时代</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mysql-9-0.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 8.3 发布：全新特性与优化提升数据库操作效率</title>
		<link>https://www.linuxmi.com/mysql-8-3.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-8-3</link>
					<comments>https://www.linuxmi.com/mysql-8-3.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Sat, 20 Jan 2024 02:33:58 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[资讯]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=23869</guid>

					<description><![CDATA[<p>MySQL 8.3 更新：用于事务分组的标记 GTID、增强的 JSON EXPLAIN 格式、重大 &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mysql-8-3.html">MySQL 8.3 发布：全新特性与优化提升数据库操作效率</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><em><strong>MySQL 8.3 更新：用于事务分组的标记 GTID、增强的 JSON EXPLAIN 格式、重大删除等。</strong></em></p>
<p>MySQL，广泛使用的开源关系型数据库管理系统，推出了最新版本MySQL 8.3。它引入了一些新功能和一些移除操作，旨在简化数据库操作。让我们来看看其中的亮点。</p>
<h2><strong>MySQL 8.3的新特性</strong></h2>
<p><strong>带有标记的GTID复制</strong></p>
<p>MySQL 8.3的一个显著特点是在MySQL复制和组复制中引入了带有标记的全局事务标识符（GTID）。这一增强功能允许对事务集进行分组和轻松识别。</p>
<p>新的GTID格式为“UUID:TAG:NUMBER”，为与特定事务组关联的GTID提供了唯一命名。通过GTID比较，用户可以区分数据和管理操作，提高了复制效率和组织性。</p>
<p>基于此，该版本引入了一个新的特权，“TRANSACTION_GTID_TAG”，用于设置GTID值，允许数据库管理员控制谁可以分配GTID，进一步优化事务管理。</p>
<p><strong>EXPLAIN中的JSON格式版本控制</strong></p>
<p>MySQL 8.3引入了一个服务器系统变量，“explain_json_format_version”，允许用户在“EXPLAIN FORMAT=JSON”语句中选择两个版本的JSON输出格式。此功能确保与MySQL Optimizer未来版本更好的兼容性，提高了长期可用性。</p>
<p><strong>线程池插件增强</strong></p>
<p>线程池插件现在在MySQL性能模式中包含了额外的信息。新的表和列提供了对线程池连接和状态的全面洞察，有助于更好地进行性能分析。</p>
<p><strong>其他值得注意的变化</strong></p>
<p>&#8216;binlog_transaction_dependency_tracking&#8217;系统变量的默认值已更改为&#8217;WRITESET&#8217;，标志着逐渐淘汰该功能。</p>
<p>该版本还引入了&#8217;WITH_LD&#8217; CMake选项，允许用户指定其选择的链接器，并对MySQL Enterprise Data Masking and De-Identification进行了增强。</p>
<p>最后，MySQL性能模式中增加了详细的线程池连接信息，这对性能调优非常有价值。</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-23871 aligncenter" src="https://www.linuxmi.com/wp-content/uploads/2024/01/mysql-8-3.png" alt="" width="1920" height="1080" /></p>
<p style="text-align: center;">Ubuntu 22.04 中的 MySQL 8.3</p>
<p><strong>MySQL 8.3移除一些功能和函数：新时代即将来临</strong></p>
<p>MySQL 8.3还删除了一些功能和函数，强调了向更高效和现代数据库实践的转变。</p>
<p>已删除了一些关键的C API函数，如mysql_kill()、mysql_list_fields()等，同时建议使用替代方法执行类似的操作。</p>
<p>此外，“FLUSH HOSTS”语句用于清除主机名的内部缓存，先前被弃用，现在已被移除。用户被引导使用替代方法来清除主机缓存。</p>
<p>各种复制和服务器选项，如“&#8211;slave-rows-search-algorithms”和“&#8211;log_bin_use_v1_events”等，也已被删除，引导用户转向更高效和现代的做法。</p>
<p>最后，MySQL 8.3限制了用于冲突检查的写入集在基于行的记录中的使用，表明了对二进制日志事务依赖跟踪的精细化处理。</p>
<p>鉴于所有这些变化，建议用户熟悉这些变化，以充分发挥数据库管理任务中数据库的潜力。</p>
<p>查看<a href="https://dev.mysql.com/doc/refman/8.3/en/mysql-nutshell.html" target="_blank" rel="nofollow noopener">主要变更</a>或<a href="https://dev.mysql.com/doc/relnotes/mysql/8.3/en/news-8-3-0.html" target="_blank" rel="nofollow noopener">详细列表</a>以获取更深入的详细信息。</p><p>The post <a href="https://www.linuxmi.com/mysql-8-3.html">MySQL 8.3 发布：全新特性与优化提升数据库操作效率</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mysql-8-3.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 5.5 升级至 5.7 的具体步骤</title>
		<link>https://www.linuxmi.com/mysql-5-5-update-5-7.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-5-5-update-5-7</link>
					<comments>https://www.linuxmi.com/mysql-5-5-update-5-7.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Sun, 22 Jan 2023 08:54:26 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=19854</guid>

					<description><![CDATA[<p>服务器上装的是 MySQL 5.5，准备直接升级到最 5.7 版本，下载了 Windows 上的安装 &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mysql-5-5-update-5-7.html">MySQL 5.5 升级至 5.7 的具体步骤</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>服务器上装的是 MySQL 5.5，准备直接升级到最 5.7 版本，下载了 Windows 上的安装程序，运行时进行的是将我的 5.5 从小版本升级到大版本。</p>
<p>第一步：停止原来的 MySQL 服务，打开任务管理器，找到 mysqld 的进程名，停止掉。</p>
<p>第二步：备份原来数据库的文件，在C:\ProgramData\MySQL 相应的版本目录下面，有data目录，将此目录复制到其他地方备份。</p>
<p>安全起见找到 <code>mysql</code> 安装的位置，<span style="color: #ff0000;"><strong>将整个 <code>mysql</code>目录备份</strong></span>后删除。</p>
<p>第三步：运行 MySQL 的卸载程序，可以是控制面板程序里面执行卸载。</p>
<p>第四步：如果发现卸载的并不干净，打开注册表，在开始里面输入regedit，然后在注册表界面使用查找，找MySQL，将找到的全部删除，按F3搜寻下一个，将所有的删除。</p>
<p>第五步：现在执行 MySQL 5.7 的安装程序，安着安装步骤执行完安装。</p>
<p>第六步：将我们第一步中备份的 data 目录复制到 C:\ProgramData\MySQL 下面，找到 5.7 的目录，覆盖里面的 data 目录。如果提示覆盖失败，则在任务管理器里面，先将 mysqld 的进程关掉。</p>
<p>第七步：现在启动 MySQL5.7，会发现启动失败。在开始菜单里面找到MySQL Install &#8211; Community，打开始是如下的界面，执行一下Reconfigure 即可。</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19855" src="https://www.linuxmi.com/wp-content/uploads/2023/01/MySQL-Install-configure.png" alt="" width="790" height="589" /></p>
<p>按照向导，重新执行一下配置，基本上一直按下一步即可。然后重启 MySQL 5.7，就已经正常使用，以前的数据都恢复了。</p>
<p>一些截图：</p>
<h1 id="articleContentId" class="title-article">Windows 下将 MySQL 5.5 升级到 MySQL 5.7</h1>
<p>进入mysql官网 https://dev.mysql.com/downloads/installer/ 选择下载：mysql-installer-community-5.7.20.0.msi</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19858" src="https://www.linuxmi.com/wp-content/uploads/2023/01/1-1.png" alt="" width="932" height="299" /></p>
<p>选择custom安装server：</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19859" src="https://www.linuxmi.com/wp-content/uploads/2023/01/2-2.png" alt="" width="475" height="521" /></p>
<p>根据自己系统选择：</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19860" src="https://www.linuxmi.com/wp-content/uploads/2023/01/3-2.png" alt="" width="552" height="488" /></p>
<p>取消“Development Components”的勾选（因为我们只需要安装mysql server）</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19861" src="https://www.linuxmi.com/wp-content/uploads/2023/01/4-2.png" alt="" width="528" height="247" /></p>
<p>按提示点击 Execute 安装</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19862" src="https://www.linuxmi.com/wp-content/uploads/2023/01/5-2.png" alt="" width="768" height="575" /></p>
<p>安装mysql server</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19863" src="https://www.linuxmi.com/wp-content/uploads/2023/01/6-2.png" alt="" width="777" height="574" /></p>
<p>Config Type选择“Development Machine”</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19864" src="https://www.linuxmi.com/wp-content/uploads/2023/01/7.png" alt="" width="767" height="340" /></p>
<p>设置root密码后，这里我取消了开机启动</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19865" src="https://www.linuxmi.com/wp-content/uploads/2023/01/8.png" alt="" width="634" height="248" /></p>
<p>点击“Execute”，等待完成就可以了</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19866" src="https://www.linuxmi.com/wp-content/uploads/2023/01/9.png" alt="" width="778" height="586" /></p>
<p>点击finish，后面的update Catalog可以忽略。使用 HeidiSQL 测试连接即可。</p>
<p>将我们第一步中备份的data目录复制到C:\ProgramData\MySQL下面，找到5.7的目录，覆盖里面的data目录。如果提示覆盖失败，则在任务管理器里面，先将mysqld的进程关掉。</p>
<p>现在启动MySQL5.7，会发现启动失败。在开始菜单里面找到MySQL Install &#8211; Community，打开始是如下的界面，执行一下Reconfigure即可。</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-19855" src="https://www.linuxmi.com/wp-content/uploads/2023/01/MySQL-Install-configure.png" alt="" width="790" height="589" /></p><p>The post <a href="https://www.linuxmi.com/mysql-5-5-update-5-7.html">MySQL 5.5 升级至 5.7 的具体步骤</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mysql-5-5-update-5-7.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cannot proceed because system tables used by Event Scheduler were found damaged at server start</title>
		<link>https://www.linuxmi.com/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start</link>
					<comments>https://www.linuxmi.com/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Sun, 22 Jan 2023 05:46:11 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=19852</guid>

					<description><![CDATA[<p>Cannot proceed because system tables used by Event &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start.html">Cannot proceed because system tables used by Event Scheduler were found damaged at server start</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="_1RuRku">Cannot proceed because system tables used by Event Scheduler were found damaged at server start</h1>
<p>今天因测试库出现了一点问题，怀疑某些人误操作对数据库进行了升级</p>
<p>在navicat 上面 导出表报错，[ERR] 1577 &#8211; Cannot proceed because system tables used by Event Scheduler were found damaged at server start、</p>
<div>
<div>
<p>今天在MySQL 5.7的数据库上导出数据库时，碰到一个错误信息：Cannot proceed because system tables used by Event Scheduler were found damaged at server start；最近对数据库进行了升级，可能是因为数据库版本不一致造成的，网上找的解决方法，记录一下。</p>
<p>找到mysql/bin目录 ，依次执行如下命令（xxxxxxxxxx为数据库root用户的密码）：</p>
<p>mysqlcheck是用来 检查，分析，优化，修复表的。</p>
</div>
</div>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -uroot -pxxxxxxxxxx --all-databases --check-upgrade --auto-repair</code></pre>
<p>再执行第2条命令</p>
<p>mysql_upgrade 检查所有数据库中与mysql服务器当前版本不兼容的所有表，mysql_upgrade也会升级系统表，以便你能使用新添加的权限或功能。如果mysql_upgrade发现一张表可能不兼容，将该表进行检查，如果发现问题，则试图对其进行修复。如果不能修复，则需要人工进行表和索引的重建或修复。每次升级mysql，都需要运行mysql_upgrade</p>
<pre class="pure-highlightjs"><code class="null">mysql_upgrade -uroot -pxxxxxxxxxx --force</code></pre>
<div>
<div>
<p>如果还是报错，重启mysql服务。</p>
<pre class="pure-highlightjs"><code class="null">service mysqld restart</code></pre>
</div>
</div><p>The post <a href="https://www.linuxmi.com/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start.html">Cannot proceed because system tables used by Event Scheduler were found damaged at server start</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/cannot-proceed-because-system-tables-used-by-event-scheduler-were-found-damaged-at-server-start.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adminer &#8211; 功能齐全的 MySQL 数据库管理工具</title>
		<link>https://www.linuxmi.com/adminer-mysql.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adminer-mysql</link>
					<comments>https://www.linuxmi.com/adminer-mysql.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Wed, 23 Nov 2022 00:19:19 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=18950</guid>

					<description><![CDATA[<p>Adminer (以前叫phpMinAdmin)，是一个用 PHP 编写的前端数据库管理工具。与 p &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/adminer-mysql.html">Adminer &#8211; 功能齐全的 MySQL 数据库管理工具</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Adminer (以前叫phpMinAdmin)，是一个用 PHP 编写的前端数据库管理工具。与 phpMyAdmin 不同的是，它只包含一个 PHP 文件，可以在安装 Adminer 的目标服务器上下载。</p>
<p>与 phpMyAdmin 相比，Adminer 提供了精简的 UI。它适用于流行的 SQL 数据库管理系统，如 MariaDB、PostgreSQL、MySQL、Oracle、SQLite、MS SQL 以及 Elasticsearch 搜索引擎。</p>
<p>在本指南中，我们将指导您在基于 RHEL 的发行版上安装 Adminer。</p>
<h3>第 1 步：在 RHEL 中安装 LAMP 堆栈</h3>
<p>由于 Adminer 是从前端访问并由 PHP 提供支持的，因此我们需要安装 LAMP 堆栈。我们已经有了一个关于如何在基于 RHEL 的发行版上安装 LAMP 堆栈的综合指南。</p>
<p>在 LAMP 堆栈就位后，继续并安装与Adminer 一起工作所需的其他PHP扩展。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo dnf install php php-curl php-zip php-json php-mysqli php-gd
</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-full wp-image-18952" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-1.png" alt="" width="934" height="493" /></h3>
<h3>步骤 2：为 Adminer 创建数据库</h3>
<p>下一步是为 Adminer 创建数据库。因此，登录到数据库服务器。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo mysql -u root -p</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18953" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-2.png" alt="" width="1088" height="521" /></h3>
<p>创建数据库和数据库用户。</p>
<pre class="pure-highlightjs"><code class="null">CREATE DATABASE adminer_db;
CREATE USER 'adminer_user'@'localhost' IDENTIFIED BY 'P@ssword321';</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18954" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-3.png" alt="" width="1088" height="633" /></h3>
<p>然后向数据库用户授予对<b> Adminer </b>数据库的所有权限。</p>
<pre class="pure-highlightjs"><code class="null">GRANT ALL ON adminer_db.* TO 'adminer_user'@'localhost';</code></pre>
<p>应用更改并退出数据库服务器。</p>
<pre class="pure-highlightjs"><code class="null">FLUSH PRIVILEGES;
EXIT;</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18955" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-4.png" alt="" width="1088" height="549" /></h3>
<h3>步骤 3：下载并配置 Adminer</h3>
<p>Adminer 数据库就位后，下一步是下载<b> Adminer </b>安装文件。但首先，您需要在文档根目录中为 <strong>Adminer </strong>创建一个目录，如下所示。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo mkdir -p /var/www/html/adminer
[sudo] linuxmi 的密码：</code></pre>
<p>接下来，导航到<b> Adminer </b>目录。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ cd /var/www/html/adminer</code></pre>
<p>然后使用wget 命令下载最新版本的 <a title="Download Adminer in Linux" href="https://www.adminer.org/en/#download" target="_blank" rel="noopener nofollow">Adminer PHP 文件</a>并将其另存为 <strong>index.php</strong>。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost adminer]$ wget -O index.php https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18956" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-5.png" alt="" width="1088" height="241" /></h3>
<p>下载完成后，设置以下目录所有权和权限。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost adminer]$ sudo chown -R apache:apache /var/www/html/adminer/
[sudo] linuxmi 的密码：
[linuxmi@localhost adminer]$ sudo chmod -R 775 /var/www/html/adminer/
</code></pre>
<h3><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18957" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-6.png" alt="" width="1088" height="241" /></h3>
<h3>步骤 4：为 Adminer 配置 Apache</h3>
<p>继续，您需要为<strong>Adminer</strong> 配置一个 Apache 虚拟主机文件。因此，在 /<strong>etc/httpd/conf.d/</strong>directory 中创建一个虚拟主机文件。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo vim /etc/httpd/conf.d/adminer.conf</code></pre>
<p data-inc="1">将以下行粘贴到文件中，确保将 <strong>ServerName </strong>指令中的 <strong>linuxmi.com </strong>值替换为服务器的注册域名或公共 IP。</p>
<pre class="pure-highlightjs"><code class="null">&lt;VirtualHost *:80&gt;
     ServerName linuxmi.com
     DocumentRoot /var/www/html/adminer/
     ServerAdmin admin@linuxmi.com
     DirectoryIndex index.php
     ErrorLog /var/log/httpd/adminer-error.log
     CustomLog /var/log/httpd/adminer-access.log combined
&lt;/VirtualHost&gt;</code></pre>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-18960" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-8.png" alt="" width="1088" height="381" /></p>
<p>保存并退出配置文件。</p>
<p>接下来重新启动 <strong>Apache </strong>以应用所做的更改。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo systemctl restart httpd</code></pre>
<p>确保Apache正在运行：</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo systemctl status httpd</code></pre>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-18961" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-7.png" alt="" width="1088" height="381" /></p>
<p>此外，请确保配置没有任何错误。</p>
<pre class="pure-highlightjs"><code class="null">[linuxmi@localhost www.linuxmi.com]$ sudo apachectl configtest</code></pre>
<h3>步骤5：从Web浏览器访问 Adminer</h3>
<p>最后，启动您的 Web 浏览器并使用以下 URL 浏览服务器的 IP。</p>
<p>您将获得以下网页。提供 <strong>MariaDB </strong>数据库凭据，用户密码和数据库名称，然后单击“<strong>登录</strong>”。</p>
<figure id="attachment_47147" class="wp-caption aligncenter" aria-describedby="caption-attachment-47147"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-18962" src="https://www.linuxmi.com/wp-content/uploads/2022/11/php-11.png" alt="" width="1920" height="1080" /></figure>
<p data-inc="2">登录后，将显示以下显示。从这里，您可以执行各种数据库操作，例如创建数据库、表和执行 SQL 查询等等。</p>
<p>本指南到此结束。我们已经在基于 RHEL 的发行版上成功安装和配置了 Adminer。</p><p>The post <a href="https://www.linuxmi.com/adminer-mysql.html">Adminer &#8211; 功能齐全的 MySQL 数据库管理工具</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/adminer-mysql.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL 面试题 14 道</title>
		<link>https://www.linuxmi.com/mysql-interview-14.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-interview-14</link>
					<comments>https://www.linuxmi.com/mysql-interview-14.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Sat, 25 Jun 2022 00:33:57 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=16918</guid>

					<description><![CDATA[<p>在面试中经常被问到的 MySQL 题目，本文总结了面试中的经典问题。 1.主键（primary ke &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/mysql-interview-14.html">MySQL 面试题 14 道</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>在面试中经常被问到的 MySQL 题目，本文总结了面试中的经典问题。</p>
<div>
<h3>1.主键（primary key）和候选键（candidate key）有什么区别？</h3>
<p>候选键 &#8211; 候选键可以是任何列或可以作为数据库中唯一键的列组合。一张表中可以有多个候选键。每个候选键都可以作为主键。</p>
<p>主键 &#8211; 主键是唯一标识记录的列或列组合。只有一个候选键可以是主键。</p>
<hr />
</div>
<div>
<h3>2. NOW() 和 CURRENT_DATE() 有什么区别？</h3>
<p>NOW () 命令用于以小时、分钟和秒显示当前年、月、日。</p>
<p>CURRENT_DATE() 仅显示当前年、月和日期。</p>
</div>
<div>
<h3>3. MySQL 表中允许多少个触发器？</h3>
<p>以下是 MySQL 表中允许的触发器。</p>
<ul>
<li>插入前</li>
<li>插入后</li>
<li>更新前</li>
<li>更新后</li>
<li>删除前</li>
<li>删除后</li>
</ul>
<p>&nbsp;</p>
</div>
<div>
<h3>4.我们可以为索引创建多少列？</h3>
<p>16</p>
<hr />
</div>
<div>
<h3>5. 如何将数据从一张表复制到另一张表？</h3>
<p>NSERT INTO table2 (id,uid,changed,status,assign_status) SELECT id,uid,now(),&#8217;Pending&#8217;,&#8217;Assigned&#8217; FROM table1</p>
<hr />
</div>
<div>
<h3>6.如何在不复制数据的情况下复制表？</h3>
<p>CREATE TABLE users_bck SELECT * FROM users WHERE 1=0;</p>
</div>
<div>
<h3>7.什么是 MySQL？</h3>
<p>MySQL 是一个免费提供的开源关系数据库管理系统 (RDBMS)，它使用结构化查询语言 (SQL)。</p>
<p>SQL 是用于在数据库中添加、访问和管理内容的最流行的语言。它以其快速处理、久经考验的可靠性、易用性和使用灵活性而著称。MySQL 是几乎每个开源 PHP 应用程序的重要组成部分。基于 PHP 和 MySQL 的脚本的好例子是 WordPress、Joomla、Magento 和 Drupal。</p>
<hr />
</div>
<div>
<h3>8.列出MySQL的特点？</h3>
<p>关系数据库管理系统（RDBMS）：MySQL 是一个关系数据库管理系统。</p>
<ul>
<li>易于使用：MySQL 易于使用。您只需掌握 SQL 的基本知识。只需几个简单的 SQL 语句，您就可以构建 MySQL 并与之交互。</li>
<li>它是安全的：MySQL 包含一个可靠的数据安全层，可以保护敏感数据免受入侵者的侵害。密码在 MySQL 中是加密的。</li>
<li>它是可扩展的：MySQL 可以处理几乎任何数量的数据，多达 5000 万行或更多。默认文件大小限制约为 4 GB。但是，您可以将此数字增加到 8 TB 数据的理论限制。</li>
<li>在许多操作系统上兼容：MySQL 兼容在许多操作系统上运行。</li>
<li>允许回滚：MySQL 允许事务回滚、提交和崩溃恢复。</li>
<li>高性能：由于其独特的存储引擎架构，MySQL 更快、更可靠、更便宜。</li>
<li>高灵活性：MySQL 支持大量的嵌入式应用程序，这使得 MySQL 非常灵活。</li>
<li>高生产力：MySQL 使用触发器、存储过程和视图，允许开发人员提供更高的生产力。</li>
</ul>
</div>
<div>
<h3>9. transaction 和 ACID 属性是什么意思？</h3>
<p>事务是工作的逻辑单元，应该执行所有步骤或不执行任何步骤。ACID 是原子性、一致性、隔离性和持久性的缩写，它们是任何事务的属性。</p>
<hr />
</div>
<div>
<h3>10. 什么是堆表？</h3>
<p>堆是没有聚集索引的表。可以在存储为堆的表上创建一个或多个非聚集索引。数据存储在堆中而不指定顺序。通常数据最初是按照行插入表中的顺序存储的，但是数据库引擎可以在堆中移动数据以有效地存储行；因此无法预测数据顺序。要保证从堆返回的行的顺序，您必须使用 ORDER BY 子句。要指定行的存储顺序，请在表上创建聚集索引，使表不是堆。</p>
<hr />
</div>
<div>
<h3>11. 聚集表与堆表</h3>
<p><strong>堆表</strong></p>
<ul>
<li>数据不按任何特定顺序存储</li>
<li>具体数据不能快速检索，除非也有非聚集索引</li>
<li>数据页未链接，因此顺序访问需要回溯到索引分配映射 (IAM) 页</li>
<li>由于没有聚集索引，因此不需要额外的时间来维护索引</li>
<li>由于没有聚集索引，所以不需要额外的空间来存储聚集索引树</li>
<li>这些表在 sys.indexes 目录视图中的 index_id 值为 0</li>
</ul>
<p><strong>集群表</strong></p>
<ul>
<li>数据按照聚集索引键的顺序存储</li>
<li>如果查询使用索引列，可以根据聚集索引键快速检索数据</li>
<li>链接数据页以实现更快的顺序访问</li>
<li>需要额外的时间来维护基于 INSERTS、UPDATES 和 DELETES 的聚集索引</li>
<li>需要额外的空间来存储聚集索引树</li>
<li>这些表在 sys.indexes 目录视图中的 index_id 值为 1</li>
</ul>
<hr />
</div>
<div>
<h3>12. 区分 FLOAT 和 DOUBLE？</h3>
<p>以下是 FLOAT 和 DOUBLE 的区别：</p>
<ul>
<li>浮点数以八位精度存储在 FLOAT 中，它有四个字节。</li>
<li>浮点数以 18 位精度存储在 DOUBLE 中，它有 8 个字节。</li>
</ul>
</div>
<div>
<h3>13. 使用 CREATE 语句可以创建哪些对象？</h3>
<p>以下对象是使用 CREATE 语句创建的：</p>
<ul>
<li>DATABASE</li>
<li>EVENT</li>
<li>FUNCTION</li>
<li>INDEX</li>
<li>PROCEDURE</li>
<li>TABLE</li>
<li>TRIGGER</li>
<li>USER</li>
<li>VIEW</li>
</ul>
</div>
<div>
<h3>14.主键和唯一键有什么区别</h3>
<p>虽然两者都用于强制定义的列的唯一性，但主键会创建聚集索引，而唯一键会在列上创建非聚集索引。主键不允许&#8217;NULL&#8217;，但唯一键允许它。</p>
</div><p>The post <a href="https://www.linuxmi.com/mysql-interview-14.html">MySQL 面试题 14 道</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/mysql-interview-14.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>学习所有最重要的命令以开始使用 MySQL 数据库</title>
		<link>https://www.linuxmi.com/learn-mysql-database.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=learn-mysql-database</link>
					<comments>https://www.linuxmi.com/learn-mysql-database.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Thu, 09 Jun 2022 00:25:39 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=16617</guid>

					<description><![CDATA[<p>MySQL 是一个支持结构化查询语言 (SQL) 的开源关系数据库管理系统。它有助于开发各种基于 W &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/learn-mysql-database.html">学习所有最重要的命令以开始使用 MySQL 数据库</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>MySQL 是一个支持结构化查询语言 (SQL) 的开源关系数据库管理系统。它有助于开发各种基于 Web 的应用程序和在线内容。MySQL 可以在 Linux/UNIX、macOS、Windows 等所有操作系统平台上运行，并且是 LAMP 堆栈的重要组件。</p>
<p>MySQL 是最受欢迎的数据库系统之一，许多云提供商将其作为其服务的一部分提供。它使用带有查询和数据的命令，通过与数据库通信来执行任务和功能。本文介绍了最常用的 MySQL 语句，这些语句允许用户有效地使用数据库。</p>
<h2 id="using-the-mysql-client">使用 MySQL 客户端</h2>
<p>MySQL 允许您使用命令行工具<strong>mysql</strong>之类的客户端连接到服务器。使用<strong>-u</strong>和<strong>-p</strong>标志提供您的用户名和密码：</p>
<pre><code class="hljs css"><span class="hljs-selector-tag">mysql</span> <span class="hljs-selector-tag">-u</span> <span class="hljs-selector-attr">[username]</span> <span class="hljs-selector-tag">-p</span>
<span class="hljs-selector-tag">mysql</span> <span class="hljs-selector-tag">-u</span> <span class="hljs-selector-attr">[username]</span> <span class="hljs-selector-tag">-p</span> <span class="hljs-selector-attr">[database]</span>
</code></pre>
<p>完成后，退出 MySQL 命令行客户端，如下所示：</p>
<pre><code class="hljs php"><span class="hljs-keyword">exit</span></code></pre>
<h2 id="working-with-user-accounts">使用用户帐户</h2>
<p>要创建一个新用户帐户，请打开新终端以 root 身份访问 MySQL，并创建一个新用户，如下所示：</p>
<pre><code class="hljs xml">$ sudo mysql -u root -p
...
mysql<span class="hljs-symbol">&gt;</span> CREATE USER <span class="hljs-symbol">'</span>username<span class="hljs-symbol">'</span> IDENTIFIED BY <span class="hljs-symbol">'</span>password<span class="hljs-symbol">'</span>;
</code></pre>
<p>您还可以通过指定他们必须从以下位置访问数据库的主机来设置具有受限访问权限的用户帐户：</p>
<pre><code class="hljs xml">CREATE USER <span class="hljs-symbol">'</span>user<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>localhost<span class="hljs-symbol">'</span>;
CREATE USER <span class="hljs-symbol">'</span>username<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>localhost<span class="hljs-symbol">'</span> IDENTIFIED BY <span class="hljs-symbol">'</span>password<span class="hljs-symbol">'</span>;</code></pre>
<p>要指定远程连接，您可以将“localhost”替换为机器的 IP 地址，如下所示：</p>
<pre><code class="hljs xml">CREATE USER <span class="hljs-symbol">'</span>username<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>ip_address<span class="hljs-symbol">'</span> IDENTIFIED BY <span class="hljs-symbol">'</span>password<span class="hljs-symbol">'</span>;</code></pre>
<p>最后，您可以使用以下语句删除帐户：</p>
<pre><code class="hljs xml">DROP USER <span class="hljs-symbol">'</span>user<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>ip_address<span class="hljs-symbol">'</span> IDENTIFIED BY <span class="hljs-symbol">'</span>password<span class="hljs-symbol">'</span>;</code></pre>
<h2 id="user-account-privileges">用户帐户权限</h2>
<p>在继续之前，您需要在新用户帐户上设置适当的权限。这避免了数据库内不必要的用户访问的风险。</p>
<p>您可以使用 GRANT、REVOKE 和 ALTER 等语句在 MySQL 中使用用户权限。根据您希望用户能够执行的操作，您可以分配全部或部分权限。这些权限是 ALL PRIVILEGES、SELECT、UPDATE、INSERT、DELETE、CREATE、DROP 和 GRANT OPTION。</p>
<p>您可以将插入数据的管理权限分配给属于任何数据库的所有表：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">ON</span> *.* <span class="hljs-keyword">TO</span> 'username'@'ip_address';</code></pre>
<p>但是，您也可以通过在句点之前指定数据库来限制用户访问。您可以允许用户在数据库中的所有表中选择、插入和删除数据，<strong> </strong>如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">SELECT</span>, <span class="hljs-keyword">INSERT</span>, <span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">ON</span> database.* <span class="hljs-keyword">TO</span> 'user'@'ip_address' IDENTIFIED BY 'password';</code></pre>
<p>同样，您可以通过在句点后指定表名来限制用户对特定表的访问。</p>
<pre><code class="hljs css"><span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">SELECT</span>, <span class="hljs-keyword">INSERT</span>, <span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">ON</span> database.table_name <span class="hljs-keyword">TO</span> 'user'@'ip_address' IDENTIFIED BY 'password';</code></pre>
<p>您可以向特定数据库中的每个表授予所有权限，<strong> </strong>如下所示：</p>
<pre><code class="hljs xml">GRANT ALL PRIVILEGES ON database.* TO <span class="hljs-symbol">'</span>user<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>ip_address<span class="hljs-symbol">'</span> IDENTIFIED BY <span class="hljs-symbol">'</span>password<span class="hljs-symbol">'</span>;</code></pre>
<p>要从单个数据库撤消用户的权限：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">REVOKE</span> <span class="hljs-keyword">ALL</span> <span class="hljs-keyword">PRIVILEGES</span> <span class="hljs-keyword">ON</span> database.* <span class="hljs-keyword">FROM</span> 'user'@'ip_address'; </code></pre>
<p>您可以撤销每个数据库的所有用户权限，如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">REVOKE</span> <span class="hljs-keyword">ALL</span> <span class="hljs-keyword">PRIVILEGES</span>, <span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">OPTION</span> <span class="hljs-keyword">FROM</span> 'user'@'ip_address'; </code></pre>
<p>最后，您可以像这样设置密码：</p>
<pre><code class="hljs xml">SET PASSWORD FOR <span class="hljs-symbol">'</span>user<span class="hljs-symbol">'</span>@<span class="hljs-symbol">'</span>ip_address<span class="hljs-symbol">'</span> = PASSWORD(<span class="hljs-symbol">'</span>new_password<span class="hljs-symbol">'</span>);
</code></pre>
<p>请注意使用散列明文密码的 PASSWORD 函数。</p>
<h2 id="working-with-databases">使用数据库</h2>
<p>您可以创建一个名称尚不存在的新数据库：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">DATABASE</span> database_name;
</code></pre>
<p>您可以将当前数据库切换到要使用的另一个数据库：</p>
<pre><code class="hljs php"><span class="hljs-keyword">USE</span> <span class="hljs-title">database_name</span>;
</code></pre>
<p>最后，您可以删除整个数据库及其表，如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">DROP</span> <span class="hljs-keyword">DATABASE</span> database_name;</code></pre>
<h2 id="working-with-tables">使用表</h2>
<p>表是MySQL 数据库的主要结构元素，将一组相关记录分组为行。每行都有不同数据类型的列，可以是 CHAR、VARCHAR 和 TEXT 等。</p>
<p>创建表的一般语法如下：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> table_name (column_1 data_type1, column_2 data_type2);
</code></pre>
<p>您还可以通过选择特定列从现有表创建新表，如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> new_table_name <span class="hljs-keyword">AS</span> <span class="hljs-keyword">SELECT</span> column_1, column_2 <span class="hljs-keyword">FROM</span> existing_table_name;
</code></pre>
<p>您可以使用以下命令将数据添加到表中：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> table_name (column_1, column_2) <span class="hljs-keyword">VALUES</span> (value_1, value_2);
</code></pre>
<p>要删除表，请使用 DROP TABLE 语句，如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> table_name;
</code></pre>
<p>或者您保留表格但使用以下方法删除其所有数据：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">TRUNCATE</span> <span class="hljs-keyword">TABLE</span> table_name; </code></pre>
<h2 id="accessing-databases">访问数据库</h2>
<p>使用以下语句显示 MySQL DMS 中的所有可用数据库：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SHOW</span> <span class="hljs-keyword">DATABASES</span>;
</code></pre>
<p>同样，您可以列出当前数据库中的所有表：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SHOW</span> <span class="hljs-keyword">TABLES</span>;</code></pre>
<p>要查看表中的所有列：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">DESCRIBE</span> table_name;
</code></pre>
<p>要在表格中显示列信息：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">DESCRIBE</span> table_name column_name;</code></pre>
<h2 id="querying-databases">查询数据库</h2>
<p>MySQL 允许您使用<strong>SELECT</strong>语句从数据库中查询数据。您可以使用各种 MySQL 子句来扩展其基本功能。</p>
<p>以下语句返回由表中每一行的两列组成的结果集：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> column1, column2 <span class="hljs-keyword">FROM</span> table_name; 
</code></pre>
<p>或按如下方式显示所有列：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> table_name; 
</code></pre>
<p>您还可以使用以下条件查询数据库/表并检索信息：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> column1, column2 <span class="hljs-keyword">FROM</span> table_name <span class="hljs-keyword">WHERE</span> condition; 
</code></pre>
<p>SELECT 语句还允许您使用 GROUP BY 子句按一列或多列对结果集进行分组。然后，您可以使用聚合函数来计算汇总数据：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">SELECT</span> <span class="hljs-keyword">COUNT</span>(CustomerID), Country <span class="hljs-keyword">FROM</span> Customers <span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> Country;</code></pre>
<h2 id="updating-tables">更新表</h2>
<p>您可以使用 UPDATE 或 ALTER 语句修改表内的数据。UPDATE 语句允许您更新现有的单个或多个记录/行。</p>
<p>以下 MySQL 命令更改<strong>UserID</strong>为<strong>2</strong>的单个记录的<strong>UserName</strong>和<strong>City</strong>：</p>
<pre><code class="hljs xml">UPDATE Users SET UserName = <span class="hljs-symbol">'</span>Alfred James<span class="hljs-symbol">'</span>, City= <span class="hljs-symbol">'</span>Munich<span class="hljs-symbol">'</span> WHERE UserID = 2;
</code></pre>
<p>虽然此示例更新了<strong>City</strong>为<strong>Munich</strong>的所有记录的所有<strong>UserName</strong>：</p>
<pre><code class="hljs xml">UPDATE Users SET UserName=<span class="hljs-symbol">'</span>Juan<span class="hljs-symbol">'</span> WHERE City=<span class="hljs-symbol">'</span>Munich<span class="hljs-symbol">'</span>; 
</code></pre>
<p>您可以像这样向表中添加列：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> table_name <span class="hljs-keyword">ADD</span> <span class="hljs-keyword">COLUMN</span> column_name;
</code></pre>
<p>要从表中删除列，请使用 ALTER TABLE 语句，如下所示：</p>
<pre><code class="hljs sql"><span class="hljs-keyword">ALTER</span> <span class="hljs-keyword">TABLE</span> table_name <span class="hljs-keyword">DROP</span> <span class="hljs-keyword">COLUMN</span> column_name; </code></pre>
<h2 id="mysql-for-beginners">初学者的 MySQL</h2>
<p>在本文中，您已经看到了最常见的 MySQL 命令。它们使您能够管理用户帐户、更改数据库结构和操作数据。</p>
<p>一旦您熟悉了基础知识，了解 MySQL 和安全性就会很有用。您的数据库可能包含有价值和敏感的个人数据，因此保护其免受窥探至关重要。</p><p>The post <a href="https://www.linuxmi.com/learn-mysql-database.html">学习所有最重要的命令以开始使用 MySQL 数据库</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/learn-mysql-database.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>如何检查和修复 MySQL 数据库和表</title>
		<link>https://www.linuxmi.com/check-and-repair-mysql-databases-and-tables.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=check-and-repair-mysql-databases-and-tables</link>
					<comments>https://www.linuxmi.com/check-and-repair-mysql-databases-and-tables.html#respond</comments>
		
		<dc:creator><![CDATA[linuxmi]]></dc:creator>
		<pubDate>Fri, 03 Jun 2022 00:22:41 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://www.linuxmi.com/?p=16478</guid>

					<description><![CDATA[<p>当您的网站因数据库错误而损坏或无法访问时，您可能需要检查或修复 MySQL 中的数据库或表。在这种情 &#8230;</p>
<p>The post <a href="https://www.linuxmi.com/check-and-repair-mysql-databases-and-tables.html">如何检查和修复 MySQL 数据库和表</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>当您的网站因数据库错误而损坏或无法访问时，您可能需要检查或修复 MySQL 中的数据库或表。在这种情况下，您可以使用 mysqlcheck 工具检查并修复损坏的表或数据库。mysqlcheck 是一个维护工具，允许您通过命令行界面检查、修复、分析和优化 MySQL 表。使用 mysqlcheck 的最佳功能之一是您可以在实时网站上执行数据库维护，而无需停止 MySQL 服务。</p>
<p>在这篇文章中，我们将解释如何检查/修复 MySQL 数据库和表。<span id="more-47581"></span></p>
<h2>先决条件</h2>
<ul>
<li>运行 Linux 的服务器</li>
<li>在您的服务器上配置的 root 密码</li>
</ul>
<h2>mysqlcheck的基本语法</h2>
<p>mysqlcheck 命令行工具的基本语法如下所示：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck [OPTION] DATABASENAME TABLENAME -u root -p</code></pre>
<p>下面显示了可以与 mysqlcheck 一起使用的每个选项的简要说明：</p>
<ul>
<li><strong>-c</strong> &#8211; 检查表是否有错误</li>
<li><strong>-C</strong> &#8211; 检查上周之后更改的表。</li>
<li><strong>-a</strong> &#8211; 分析表。</li>
<li><strong>-A</strong> &#8211; 检查所有数据库。</li>
<li><strong>-g</strong> &#8211; 检查表以获取与版本相关的更改。</li>
<li><strong>-B</strong> , <strong>–databases</strong> – 指定多个数据库。</li>
<li><strong>-F</strong> &#8211; 检查未正确关闭的表。</li>
<li><strong>–fix-db-names</strong> – 修复数据库名称。</li>
<li><strong>–fix-table-names</strong> – 修复表名。</li>
<li><strong>-e</strong> &#8211; 执行扩展检查。</li>
<li><strong>-r</strong> &#8211; 修复损坏的表。</li>
</ul>
<h2>在 MySQL 中检查表</h2>
<p>有时，您可能需要检查特定数据库中的特定表。在这种情况下，您可以使用以下语法：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -c db-name table-name -u root -p</code></pre>
<p>例如，要检查 <strong>class </strong><strong>数据库中的 students </strong>表，请运行以下命令：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -c class students -u root -p</code></pre>
<p>您将获得以下输出：</p>
<pre class="pure-highlightjs"><code class="null">class.students                                      OK</code></pre>
<h2>检查 MySQL 中的所有表</h2>
<p>如果要检查特定数据库中的所有表，请使用以下语法：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -c db-name -u root -p</code></pre>
<p>例如，要检查<b> <strong>class </strong></b>数据库中的所有表，请运行以下命令：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -c class -u root -p</code></pre>
<p>您应该得到以下输出：</p>
<pre class="pure-highlightjs"><code class="null">Enter password: 
class.teacher                                   OK
class.students                                      OK
class.peon                                       OK</code></pre>
<h2>检查和优化所有表和所有 MySQL 数据库</h2>
<p>您可以使用以下命令检查所有表和所有数据库：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -c  -u root -p --all-databases</code></pre>
<p>输出：</p>
<pre class="pure-highlightjs"><code class="null">Enter password: 
class.teacher                                   OK
class.students                                      OK
class.peon                                       OK
guest.MyGuests                                     OK
movies.hotstar                                     OK
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.global_grants                                OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.password_history                             OK
mysql.plugin                                       OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.role_edges                                   OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK</code></pre>
<p>您还可以使用以下命令优化所有表和所有数据库：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -o root -p --all-databases</code></pre>
<p>输出：</p>
<pre class="pure-highlightjs"><code class="null">Enter password: 
class.teacher
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
class.students
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
class.peon
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
guest.MyGuests
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
movies.hotstar
note     : Table does not support optimize, doing recreate + analyze instead
status   : OK
mysql.columns_priv</code></pre>
<p>在上面的输出中，您应该看到“ <strong>Table does not support optimize</strong> ”，这意味着 InnoDB 表不支持此选项。</p>
<h2>修复 MySQL 数据库</h2>
<p>要修复<b> <strong>class </strong></b>数据库中的 <strong>teache</strong>r 表，请运行以下命令：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -r class teacher -u root -p</code></pre>
<p>输出：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -r class teacher -u root -p
Enter password: 
class.teacher                                   OK</code></pre>
<p>要修复 <strong>class </strong>和 <strong>movies </strong>数据库中的所有表，请运行以下命令：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck -r --databases class movies -u root -p</code></pre>
<p>输出：</p>
<pre class="pure-highlightjs"><code class="null">Enter password: 
class.teacher                                   OK
class.students                                      OK
class.peon                                       OK
movies.hotstar                                     OK</code></pre>
<p>如果要检查和修复所有数据库中的所有表，请运行以下命令：</p>
<pre class="pure-highlightjs"><code class="null">mysqlcheck --auto-repair --all-databases -u root -p</code></pre>
<p>输出：</p>
<pre class="pure-highlightjs"><code class="null">Enter password: 
class.teacher                                   OK
class.students                                      OK
class.peon                                       OK
guest.MyGuests                                     OK
movies.hotstar                                     OK
mysql.columns_priv                                 OK
mysql.component                                    OK
mysql.db                                           OK
mysql.default_roles                                OK
mysql.engine_cost                                  OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.global_grants                                OK
mysql.gtid_executed                                OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.password_history                             OK
mysql.plugin                                       OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.role_edges                                   OK
mysql.server_cost                                  OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK</code></pre>
<p>注意：默认情况下，InnoDB 存储引擎不支持修复。在这种情况下，您需要将 MySQL 存储引擎从 InnoDB 更改为 MyISAM。</p>
<h2>结论</h2>
<p>在这篇文章中，我们解释了如何使用 mysqlcheck 命令行工具检查和修复 MySQL 中的表。</p><p>The post <a href="https://www.linuxmi.com/check-and-repair-mysql-databases-and-tables.html">如何检查和修复 MySQL 数据库和表</a> first appeared on <a href="https://www.linuxmi.com">Linux迷</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.linuxmi.com/check-and-repair-mysql-databases-and-tables.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
