MySQL 数据库命令之 mysqladmin -- MySQL 服务器管理客户端

一、介绍

mysqladmin 命令是 MySQL 服务器管理任务的客户端工具,它可以检查 MySQL 服务器的配置和当前工作状态,创建和删除数据库,创建用户和修改用户密码等操作。

二、语法格式

mysqladmin [参数] [管理命令]

三、命令参数

选项说明
-h , --hostMySQL服务器主机名 或 ip 地址
-u , --user连接 MySQL 服务器的用户名
-p , --password连接 MySQL 服务器的密码
-? , --help显示帮助信息
-c , --count numbernumber 是自动运行次数,设置自动运行次数,必须和 -i 一起使用
-i , --sleep number间隔多长时间重复执行
-P , --port指定数据库端口,优先顺序,my.cnf,$mysql_tcp_port,/etc/services,内置默认值(3306)
-s , --silent无法连接到服务器时自动退出
-v, --verbose写更多的信息
-V, --version显示版本
–bind-address绑定的IP
–debug-check当程序退出时打印一些调试信息
–debug-info当程序退出时打印调试信息和内存和CPU使用统计信息
-f, --force不要求确认删除数据库;使用多个命令,即使发生错误也继续。
-C, --compress在服务器/客户端协议中使用压缩
–character-sets-dir字符集的文件目录
–default-character-set设置默认字符集
-b, --no-beep关闭错误提示音
–protocol用于连接的协议(TCP、套接字、管道、内存)
-r, --relative与-i一起使用时,显示当前值和以前值之间的差异。当前仅适用于扩展状态
–secure-auth如果客户端使用旧的(4.1.1之前的)协议,则拒绝连接到服务器
-S, --socket指定用于连接的套接字文件
–ssl-mode指定 SSL 连接模式
–ssl-caPEM格式的CA文件
–ssl-capathCA目录
–ssl-certPEM格式的X509证书
–ssl-cipher要使用的SSL密码
–ssl-keyPEM格式的X509密钥
–ssl-crl证书吊销列表
–ssl-crlpath证书吊销列表路径
–tls-version要使用的TLS版本,允许值为:tlsv1、tlsv1.1
-u, --user登录用户(如果不是当前用户)
-v, --verbose写更多信息
-V, --version输出版本信息并退出
-E, --vertical垂直打印输出
-w, --wait如果连接断开,等待并重试
–connect-timeout连接超时之前等待的秒数
–shutdown-timeout等待服务器关机的最大秒数
–plugin-dir=name客户端插件目录
–default-auth=name要使用的默认身份验证客户端插件
–enable-cleartext-plugin启用/禁用明文身份验证插件
–show-warnings执行完显示警告

(一)参数默认值

参数名默认值
bind-address(No default value)
count0
forceFALSE
compressFALSE
character-sets-dir(No default value)
default-character-setauto
host(No default value)
no-beepFALSE
port3306
relativeFALSE
secure-authTRUE
socket/data/3306/mysql.sock
sleep0
sslTRUE
ssl-verify-server-certFALSE
ssl-ca(No default value)
ssl-capath(No default value)
ssl-cert(No default value)
ssl-cipher(No default value)
ssl-key(No default value)
ssl-crl(No default value)
ssl-crlpath(No default value)
tls-version(No default value)
user(No default value)
verboseFALSE
verticalFALSE
connect-timeout43200
shutdown-timeout3600
plugin-dir(No default value)
default-auth(No default value)
enable-cleartext-pluginFALSE
show-warningsFALSE

(二)默认参数

按顺序从以下文件中:

/etc/my.cnf 
/etc/mysql/my.cnf/ 
/data/3306/my.cnf 
~/.my.cnf 

读取以下参数的值:

--print-defaults                     # 打印程序参数列表并退出.
--no-defaults                        # 不要从任何选项文件读取默认选项,登录文件除外
--defaults-file=#                    # 仅从给定文件中读取默认选项
--defaults-extra-file=#              # 读取全局文件后读取此文件
--defaults-group-suffix=#            # 同时读取带有concat(group,suffix)的组            
--login-path=#                       # 从登录文件读取此路径

四、支持的管理命令

create databasename:创建一个新数据库
drop databasename:删除一个数据库及其所有表
extended-status:给出服务器的一个扩展状态消息,从服务器发出扩展状态消息
flush-hosts:清空所有缓存的主机
flush-logs:清空所有日志
flush-tables:清空所有表
flush-privileges:再次装载授权表(同reload)
flush-status:清除状态变量
flush-threads:清空线程缓存
flush-privileges:重新加载授权表,刷新权限(与reload加载相同)
kill id,id,...:杀死mysql线程
password [new-password]:修改用户密码
ping:检查mysqld是否活着
processlist:显示服务器中活跃线程列表
reload:重新加载授权表
refresh:清空所有表并关闭和打开日志文件
shutdown:关掉服务器
status:给出服务器的简短状态消息,从服务器发出简短的状态消息
variables:打印出可用变量
version:得到服务器的版本信息
debug:指示服务器将调试信息写入日志
start-slave:启动主从复制
stop-slave:暂停主从复制

五、参考示例

(一)每隔两秒查看一次服务器的状态,总共重复 5 次

mysqladmin -uroot -p -i 2 -c 5 status # 相当于 show status
mysqladmin -uroot -pdadong123 -i 1 status # 每隔一秒查看一次状态

(二)修改 root 密码

语法格式:

mysqladmin -u用户名 -p旧密码 password 新密码 

给 root 加个密码 111111:

mysqladmin -uroot -p password '111111'

将 root 的密码改为 dadong:

mysqladmin -uroot -pdadong123 password 'dadong'

(三)查看数据库服务器所有进行的进程

获得当前数据库的连接线程信息:

[root@htlwk0001host ~]# mysqladmin -uroot -p processlist # 查看执行的SQL语句信息
[root@htlwk0001host ~]# mysqladmin -uroot -p -i 1 processlist # 每秒刷新一次

(四)查看数据库服务器的状态

mysqladmin -uroot -pdadong123 status 

(五)查看服务器扩展状态

mysqladmin -uroot -pdadong123 extended-status # 等同show global status

(六)清空日志

mysqladmin -uroot -pdadong123 flush-logs

(七)每秒查看一次执行的SQL语句

mysqladmin -uroot -pdadong123 processlist -i 1

(八)使用安全模式关闭数据库服务器

mysqladmin -uroot -pdadong shutdown 

(九)打印出可用变量

mysqladmin -uroot -pdadong variables # 相当于show variables

(十)检查数据库服务是否可用

[root@htlwk0001host ~]# mysqladmin -uroot -p ping
Enter password: 
mysqld is alive

(十一)查询服务器的版本

[root@htlwk0001host ~]# mysqladmin -uroot -p version
Enter password: 
mysqladmin  Ver 8.42 Distrib 5.7.31, for Linux on x86_64
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		5.7.31
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/lib/mysql/mysql.sock
Uptime:			1 hour 52 min 59 sec

Threads: 21  Questions: 784  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.115

(十二)创建数据库

[root@DB02 ~]# mysqladmin -uroot -pdadong123 create lili
Warning: Using a password on the command line interface can be insecure.

(十三)重新加载权限信息

mysqladmin -uroot -p reload

(十四)刷新所有表缓存,并关闭和打开 log

mysqladmin -uroot -p refresh

(十五)删除数据库 test

mysqladmin -uroot -p drop test
### MySQL 启动时使用 `mysqld --console --skip-grant-tables --shared-memory` 参数报错的原因分析 在尝试通过命令行启动 MySQL 并跳过权限表 (`--skip-grant-tables`) 和启用共享内存通信 (`--shared-memory`) 时,可能会遇到各种错误。以下是可能的报错原因及其对应的解决方案。 #### 原因一:未指定配置文件路径 某些情况下,默认配置文件路径可能不可用或被忽略,这可能导致命令无法正确解析所需的初始化参数[^3]。 **解决方案**: 显式指定 MySQL 配置文件路径。例如,在 Windows 系统上可以运行如下命令: ```bash mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-tables --shared-memory ``` --- #### 原因二:MySQL 版本差异导致的行为变化 随着版本更新,部分早期有效的命令行为可能不再适用。对于 MySQL 8.0 及更高版本,仅依赖于 `--skip-grant-tables` 的方法可能不足以实现预期功能[^4]。 **解决方案**: 结合其他管理工具(如 mysqladmin 或 SQL 查询)完成密码重置操作。具体步骤可参考官方文档中的安全模式指南。 --- #### 原因三:环境变量或安装路径问题 如果当前工作目录不是 MySQL 安装路径下的 bin 文件夹,则可能出现找不到 mysqld 执行程序的情况[^2]。 **解决方案**: 切换至正确的 MySQL 安装路径后再执行命令。例如: ```bash cd C:\Program Files\MySQL\MySQL Server 8.0\bin\ mysqld --console --skip-grant-tables --shared-memory ``` --- #### 原因四:系统资源冲突或其他服务干扰 当存在多个 MySQL 实例或者端口占用等情况时,上述命令也可能失败。此时需确认是否有重复的服务正在运行并清理相关进程[^1]。 **解决方案**: 使用任务管理器终止所有与 MySQL 相关的任务;关闭潜在的竞争实例后重新尝试启动。 --- ### 示例代码片段 以下是一个完整的脚本用于处理此类场景: ```bash # 步骤1: 进入MySQL Bin目录 cd /path/to/mysql/bin/ # 步骤2: 添加默认ini文件支持(Windows平台为例) mysqld --defaults-file="/etc/my.cnf" --console --skip-grant-tables --shared-memory & sleep 5 # 给予时间让服务器完全加载 # 步骤3: 登录数据库修改root账户密码 mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;" ``` 注意替换 `/path/to/mysql/`, `/etc/my.cnf` 和 `'new_password'` 成实际使用的值。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值