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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值