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服务器的日志文件。通过指定日志类型(如 binary
, engine
, error
, general
, relay
, slow
),可以仅刷新特定类型的日志。不指定任何类型将刷新所有日志。
当与特定的日志类型一起使用时,它只会关闭并重新打开指定的日志文件。
其用法如下:
mysqladmin -u [username] -p flush-logs [log_type ...]
其中 [username]
是你的 MySQL 用户名,-p
会提示你输入密码。[log_type ...]
是一个可选参数,可以是一个或多个日志类型,用空格分隔。
flush-privileges
这个命令用于重新加载授权表(权限表),这与 reload
命令相同。当你修改了 mysql.user
、mysql.db
、mysql.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