首页 > 数据库 >mysqladmin——MySQL Server管理程序(一)

mysqladmin——MySQL Server管理程序(一)

时间:2024-06-22 15:28:57浏览次数:32  
标签:密码 mysqladmin Server 命令 线程 MySQL 服务器

mysqladmin 是一个命令行工具,用于执行简单的 MySQL 服务器管理任务,如检查服务器的状态、创建和删除数据库、重载权限等。

调用mysqladmin如下:

mysqladmin [options] command [command-arg] [command [command-arg]] ...

mysqladmin支持以下命令。有些命令在命令名后面带有一个参数。

create db_name

这个命令用于在 MySQL 服务器上创建一个新的数据库。您需要替换 db_name 为您想要创建的数据库的名称。例如,要创建一个名为 my_new_db 的数据库,您可以使用以下命令:

mysqladmin -u username -p create my_new_db

debug

在 MySQL 8.0.20 之前,debug 命令告诉服务器将调试信息写入错误日志。从 MySQL 8.0.20 开始,debug 命令已被移除,因为 MySQL 提供了更精细的控制来设置服务器的日志记录选项。

drop db_name

这个命令用于删除名为 db_name 的数据库以及其中的所有表。使用此命令时请小心,因为它会永久删除数据库及其内容。例如:

mysqladmin -u username -p drop db_name

extended-status

这个命令用于显示 MySQL 服务器的扩展状态变量及其值。这些变量提供了关于服务器内部状态的详细信息,如连接数、查询缓存使用情况等。例如:

mysqladmin -u username -p extended-status

flush-hosts

这个命令用于清空 MySQL 服务器的主机缓存。主机缓存用于存储客户端主机名的解析结果,以提高性能。在某些情况下,如果主机名解析发生变化或您怀疑主机缓存中存在错误条目,您可能需要清空它。使用 flush-hosts 命令可以清除所有主机缓存条目。例如:

mysqladmin -u username -p flush-hosts

flush-logs [log_type ...]

这个命令用于刷新(关闭并重新打开)MySQL服务器的日志文件。通过指定日志类型(如 binaryengineerrorgeneralrelayslow),可以仅刷新特定类型的日志。不指定任何类型将刷新所有日志。

当与特定的日志类型一起使用时,它只会关闭并重新打开指定的日志文件。

其用法如下:

mysqladmin -u [username] -p flush-logs [log_type ...]

其中 [username] 是你的 MySQL 用户名,-p 会提示你输入密码。[log_type ...] 是一个可选参数,可以是一个或多个日志类型,用空格分隔。

flush-privileges

这个命令用于重新加载授权表(权限表),这与 reload 命令相同。当你修改了 mysql.usermysql.dbmysql.host 等权限表后,需要执行此命令来使更改生效。

执行这个语句后,MySQL 会重新读取权限表,并应用新的权限设置。这意味着所有后续的客户端连接都将受到新权限设置的影响。但是,对于已经建立的连接,它们的权限在连接期间是固定的,不会受到 FLUSH PRIVILEGES; 的影响。要让已经建立的连接也使用新的权限设置,你需要关闭并重新建立这些连接。

flush-status

这个命令用于清除状态变量。状态变量是MySQL服务器运行时的各种计数器,例如连接数、查询数等。

flush-tables

这个命令用于关闭所有打开的表,并重新打开它们。这可以释放表锁,并关闭任何打开的表文件句柄。在某些情况下,这可以加速后续对表的访问。

flush-threads

这个命令用于清空线程缓存。线程缓存用于存储不再使用的线程,以便将来可以重用它们,而不是每次都创建新的线程。如果服务器创建了太多的线程,可能会耗尽资源。通过清空线程缓存,可以释放这些资源。

kill id,id,...

这个命令用于终止MySQL服务器上的线程。你可以指定一个或多个线程ID,用逗号分隔。要终止其他用户的线程,连接的用户必须具有 CONNECTION_ADMIN 权限(或已弃用的 SUPER 权限)。

password new_password

这个命令用于设置新密码。它将更改与 mysqladmin 用于连接到服务器的帐户关联的密码。因此,下次你使用相同的帐户调用 mysqladmin(或任何其他客户端程序)时,你必须指定新密码。但是,使用 mysqladmin 设置密码应该被认为是不安全的。在某些系统上,你的密码可能会对其他用户可见,因为系统状态程序(如 ps)可能会显示命令行。虽然MySQL客户端通常会在初始化过程中用零覆盖命令行密码参数,但在这之前仍有一个短暂的可见时间。此外,在某些系统上,这种覆盖策略是无效的,密码仍然对 ps 可见。

当 new_password 的值包含空格或对你的命令解释器来说具有特殊意义的字符时,你需要将它用引号括起来。在 Windows 上,确保使用双引号而不是单引号;单引号不会被从密码中移除,而是被解释为密码的一部分。

以下是一个例子,说明如何在 Windows 的命令提示符(CMD)或 PowerShell 中安全地设置包含空格或特殊字符的密码:

mysqladmin password "my new password"

当使用 mysqladmin 命令来更改密码时,如果紧跟在 password 命令之后省略了新密码,mysqladmin 会提示你输入新密码的值。这样做可以避免在命令行中直接指定密码,从而增加了安全性。

但是,确实需要注意以下几点:

  • 省略密码值的时机:只有在 password 是 mysqladmin 命令行上的最后一个命令时,才可以省略密码值。否则,下一个参数将被解释为密码。

  • --skip-grant-tables 选项:如果 MySQL 服务器是使用 --skip-grant-tables 选项启动的,那么 mysqladmin 的 password 命令将不会应用密码更改。即使你在同一条命令行上先使用了 flush-privileges 来重新启用授权表,这也不会起作用,因为 flush 操作是在连接之后发生的。

  • 分开执行命令:如果你需要在一个使用 --skip-grant-tables 选项启动的服务器上更改密码,你可以首先使用 mysqladmin flush-privileges 命令来重新启用授权表,然后在一个单独的命令中使用 mysqladmin password 并输入新密码。

  • 安全性:直接在命令行中输入密码(即使是隐藏的)也可能存在安全风险。在生产环境中,最好使用配置文件、环境变量或安全的密码管理工具来管理密码。

  • 版本兼容性:不同的 MySQL 版本可能会有细微的差别,因此最好查阅你正在使用的 MySQL 版本的官方文档以获取最准确的信息。

  • 备份:在更改密码之前,确保你有适当的备份,以防万一出现问题。

ping

这个命令用于检查 MySQL 服务器是否正在运行并且可以从客户端连接。如果服务器正在运行并且可以通过指定的连接参数(如主机、端口、用户名和密码)进行连接,那么 mysqladmin 将返回状态码 0。如果服务器无法连接(例如,因为它没有运行),则返回状态码 1。

重要的是要注意,即使由于权限问题(如“Access denied”)导致连接被拒绝,这个命令也可能返回状态码 0。这是因为这意味着服务器正在运行,但拒绝了连接尝试,这与服务器没有运行的情况是不同的。

检查服务器是否运行的使用示例如下:

mysqladmin -h your_host -u your_username -p ping

(提示输入密码后,如果服务器运行,则不输出任何内容并返回状态码 0;如果服务器未运行,则显示错误消息并返回状态码 1。)

processlist

这个 命令用于显示 MySQL 服务器上的活动线程列表。这与在 MySQL 客户端中执行 SHOW PROCESSLIST; SQL 命令的效果类似。这个列表会显示当前正在服务器上执行的查询、线程 ID、用户、主机等信息。

如果你在使用 mysqladmin 时加上 --verbose 或 -v 选项(即 mysqladmin -v processlist),那么输出的信息将类似于在 MySQL 客户端中执行 SHOW FULL PROCESSLIST; 的结果。FULL PROCESSLIST 会显示更多的信息,例如查询的完整文本(如果可用)。

显示活动线程列表的示例如下:

mysqladmin -h your_host -u your_username -p processlis

显示详细的活动线程列表的示例如下:

mysqladmin -h your_host -u your_username -p -v processlist

(提示输入密码后,将显示更详细的活动线程列表。)

标签:密码,mysqladmin,Server,命令,线程,MySQL,服务器
From: https://blog.csdn.net/u011565038/article/details/139869706

相关文章

  • SQL 获取SQL Server中两个日期之间的所有日期
    方法一:使用CTE和日期函数使用CTE(公共表表达式)和日期函数,可以轻松地获取两个日期之间的所有日期。 首先,我们创建一个CTE,该CTE的目的是生成一个日期序列。然后,在CTE中使用日期函数生成从开始日期到结束日期的日期序列。最后,我们从CTE中选择所有的日期。下面是一个示例查询,展示......
  • [MySQL总结] Explain详解、索引最佳优化
    目录ExplainExplain分析示例explain两个变种explain中的列1.id列2.select_type列3.table列4.type列5.possible_keys列6.key列7.key_len列8.ref列9.rows列10.Extra列索引最佳优化实践1.全值匹配2.最左前缀法则3.不在索引列上做任何操作(计算、函数、(自动or......
  • MySQL总结-索引优化实战详解一
    目录一、索引下推优化详解1.联合索引第一个字段用范围不会走索引2.强制走索引3.覆盖索引优化4.in和or在表数据量比较大的情况会走索引,在表记录不多的情况下会选择全表扫描5.likeKK%一般情况都会走索引索引下推(IndexConditionPushdown,ICP)为什么范围查找Mysql没有......
  • 在Linux中,mysql 数据备份工具有哪些?
    在Linux中,MySQL数据备份工具有多种选择,这些工具在功能、性能和易用性上有所不同。以下是一些常用的MySQL数据备份工具及其特点:mysqldump描述:mysqldump是MySQL自带的一个命令行工具,用于执行逻辑备份。它通过导出SQL语句来备份数据库,可以备份表结构、数据以及视图等。优点:备......
  • 在Linux中,如何重置 mysql root 密码?
    在Linux系统中重置MySQL的root密码通常有几种方法,以下是一些常见的步骤:1.使用mysqladmin命令首先,停止MySQL服务:sudosystemctlstopmysql以安全模式启动MySQL,允许root用户无密码登录:sudomysqld_safe--skip-grant-tables&连接到MySQL服务器:mysql-uroot选......
  • 在Linux中,mysql 如何减少主从复制延迟?
    主从复制延迟是MySQL数据库中一个常见但关键的问题,它直接影响到数据的实时性和系统的响应速度。在企业生产环境中,解决此问题能显著提高数据库的性能和稳定性。下面将详细探讨如何减少主从复制延迟:查看同步延迟状态使用SHOWSLAVESTATUS命令:该命令可提供关于从库复制状态的详......
  • 【MySQL 的三大日志的作用】
    在管理MySQL数据库时,了解和区分数据库使用的三大日志类型至关重要。这些日志对于确保数据的完整性、提供恢复机制以及维持数据库的稳定性发挥着关键作用。最主要还是小豆前段时间去参加面试被问到了这些内容,下面将详细讨论RedoLog、Binlog和UndoLog的异同。RedoLog(重做......
  • MySQL数据库故障恢复
    1、故障类型分类在此次故障中,对进行备份也未开启binlog日志,无法直接还原数据库,属于典型表内mysql-delete数据误删除。2、故障分析与可行性方案制定对于mysqlinnodb误删除导致记录丢失的恢复方案有三种,分别是备份还原、binlog还原和记录深度解析。MySQL数据库的恢复流程:1、......
  • 如何使用SQL工具批量执行SQL文件?(以MySQL和SQLynx为例)
    目录1.配置MySQL数据源2.打开SQL文件3.执行SQL文件4.检查执行结果5.SQL文件示例6.注意事项7.总结在现代数据库管理和操作中,批量执行SQL文件在MySQL中显现出其巨大的价值和不可替代的作用。通过将多个SQL语句集成在一个文件中进行批量处理,数据库管理......
  • 【MySQL连接器(Python)指南】02-MySQL连接器(Python)版本与实现
    文章目录前言MySQL连接器(Python)版本MySQL连接器(Python)实现总结前言MySQL连接器(Python),用于让Python程序能够访问MySQL数据库。要想让Python应用程序正确高效地使用MySQL数据,就需要深入了解MySQL连接器的特性和使用方法。MySQL连接器(Python)版本下表......