Linux命令-mysqladmin(MySQL服务器管理客户端)

mysqladmin 是 MySQL 数据库的管理客户端工具,用于执行各种管理操作,如创建/删除数据库、检查服务器状态、关闭服务器、修改密码等。它是 MySQL 服务器管理的重要命令行工具。

📖 基本语法

bash 复制代码
mysqladmin [选项] 命令 [命令参数]

🎯 常用选项

选项 说明
-h, --host=主机名 连接的主机名(默认 localhost)。
-P, --port=端口号 连接的端口(默认 3306)。
-u, --user=用户名 连接的用户名。
-p, --password[=密码] 连接时使用的密码。
-S, --socket=套接字文件 用于连接的 Unix 套接字文件。
-v, --verbose 显示更多信息。
-V, --version 显示版本信息并退出。
-f, --force 强制执行操作,不询问确认。
-c, --count=次数 重复执行命令的次数。
-i, --sleep=秒数 重复执行命令的间隔秒数。
-r, --relative 显示相对值(与 -i 一起使用)。
-s, --silent 静默模式,只输出错误信息。
-E, --vertical 垂直输出结果(类似 \G)。
-?, --help 显示帮助信息。

💡 常用命令

命令 说明
create 数据库名 创建新数据库。
drop 数据库名 删除数据库。
extended-status 显示服务器状态变量。
flush-hosts 刷新所有主机缓存。
flush-logs 刷新所有日志。
flush-privileges 重新加载授权表(同 reload)。
flush-status 清除状态变量。
flush-tables 刷新所有表。
flush-threads 刷新线程缓存。
kill 进程id,... 杀死 MySQL 进程。
old-password 新密码 使用旧格式设置密码(MySQL 4.1 之前)。
password 新密码 设置新密码。
ping 检查 MySQL 服务器是否运行。
processlist 显示活动进程列表。
refresh 刷新所有表并关闭/打开日志文件。
reload 重新加载授权表。
shutdown 关闭 MySQL 服务器。
start-slave 启动从服务器复制。
status 显示服务器状态。
stop-slave 停止从服务器复制。
variables 显示系统变量。
version 显示版本信息。

🔧 核心用法示例

1. 检查 MySQL 服务器状态
bash 复制代码
# 检查服务器是否运行
mysqladmin -u root -p ping

# 显示服务器状态
mysqladmin -u root -p status

# 显示详细状态变量
mysqladmin -u root -p extended-status

# 显示系统变量
mysqladmin -u root -p variables
2. 管理数据库
bash 复制代码
# 创建数据库
mysqladmin -u root -p create new_database

# 删除数据库
mysqladmin -u root -p drop old_database
# 会提示确认

# 删除数据库(不提示)
mysqladmin -u root -p drop -f old_database
3. 管理密码
bash 复制代码
# 设置 root 密码(初始设置)
mysqladmin -u root password "newpassword"

# 修改 root 密码(已有密码)
mysqladmin -u root -p'oldpassword' password "newpassword"

# 使用提示输入旧密码
mysqladmin -u root -p password "newpassword"
4. 刷新操作
bash 复制代码
# 刷新权限表(使新授权生效)
mysqladmin -u root -p flush-privileges

# 刷新所有表
mysqladmin -u root -p flush-tables

# 刷新日志
mysqladmin -u root -p flush-logs

# 刷新主机缓存
mysqladmin -u root -p flush-hosts

# 刷新所有(相当于同时执行 flush-tables 和 flush-logs)
mysqladmin -u root -p refresh
5. 进程管理
bash 复制代码
# 显示进程列表
mysqladmin -u root -p processlist

# 显示详细进程列表
mysqladmin -u root -p -v processlist

# 杀死进程
mysqladmin -u root -p kill 进程ID1,进程ID2,...

# 杀死所有进程(危险!)
mysqladmin -u root -p processlist | awk '/^| [0-9]+ /{print $2}' | xargs mysqladmin -u root -p kill
6. 服务器控制
bash 复制代码
# 关闭 MySQL 服务器
mysqladmin -u root -p shutdown

# 启动从服务器复制
mysqladmin -u root -p start-slave

# 停止从服务器复制
mysqladmin -u root -p stop-slave

📊 监控 MySQL 服务器

1. 基本监控脚本
bash 复制代码
#!/bin/bash
# 监控 MySQL 状态

echo "=== MySQL 状态监控 ==="
echo "时间: $(date)"

# 检查服务器是否运行
if mysqladmin -u root -p ping > /dev/null 2>&1; then
    echo "状态: 运行中"
else
    echo "状态: 停止"
    exit 1
fi

# 显示状态
mysqladmin -u root -p status

# 显示关键状态变量
echo -e "\n=== 关键状态变量 ==="
mysqladmin -u root -p extended-status | \
    grep -E '(Threads_connected|Threads_running|Queries|Slow_queries|Bytes_received|Bytes_sent|Innodb_buffer_pool_reads|Innodb_rows_read)'
2. 定期监控
bash 复制代码
# 每5秒监控一次
while true; do
    clear
    mysqladmin -u root -p -i 5 processlist
    sleep 5
done

# 或使用 watch 命令
watch -n 5 'mysqladmin -u root -p processlist'
3. 性能监控
bash 复制代码
# 监控连接数
mysqladmin -u root -p extended-status | grep -i threads_connected

# 监控查询性能
mysqladmin -u root -p extended-status | grep -E '(Queries|Slow_queries)'

# 监控 InnoDB 状态
mysqladmin -u root -p extended-status | grep -i innodb

# 监控网络流量
mysqladmin -u root -p extended-status | grep -E '(Bytes_received|Bytes_sent)'

⚠️ 重要注意事项

  1. 权限要求 :大多数 mysqladmin 命令需要管理员权限(如 root 用户)。
  2. 密码安全:在脚本中使用密码时,考虑使用配置文件或环境变量,避免在命令行中暴露。
  3. 生产环境谨慎操作shutdownkilldrop 等命令在生产环境中需特别小心。
  4. 备份重要数据:在执行删除或修改操作前,确保有备份。

🔍 故障排除

1. 连接失败
bash 复制代码
# 检查 MySQL 服务是否运行
systemctl status mysql

# 检查端口
netstat -tlnp | grep 3306

# 检查 socket 文件
ls -l /var/run/mysqld/mysqld.sock

# 使用 TCP 连接(如果 socket 连接失败)
mysqladmin -h 127.0.0.1 -P 3306 -u root -p ping
2. 权限不足
sql 复制代码
-- 在 MySQL 中授予用户 mysqladmin 权限
GRANT SHUTDOWN, PROCESS, RELOAD, SUPER ON *.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
3. 密码问题
bash 复制代码
# 如果忘记 root 密码,可以重置
# 1. 停止 MySQL 服务
sudo systemctl stop mysql

# 2. 以安全模式启动
sudo mysqld_safe --skip-grant-tables &

# 3. 重置密码
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

# 4. 重启 MySQL 服务
sudo systemctl restart mysql

📌 最佳实践

  1. 使用配置文件 :将连接参数存储在 ~/.my.cnf 中:

    ini 复制代码
    [mysqladmin]
    user=root
    password=your_password
    host=localhost

    然后可以直接运行:mysqladmin status

  2. 监控脚本:定期监控 MySQL 状态并记录日志:

    bash 复制代码
    # 记录状态到日志文件
    mysqladmin -u root -p extended-status >> /var/log/mysql_status.log
  3. 自动化管理:结合 cron 定时任务进行自动化管理:

    bash 复制代码
    # 每天凌晨刷新日志
    0 0 * * * /usr/bin/mysqladmin -u root -p flush-logs
    
    # 每小时检查服务器状态
    0 * * * * /usr/bin/mysqladmin -u root -p ping > /dev/null || systemctl restart mysql
  4. 安全考虑 :为 mysqladmin 操作创建专用用户,并仅授予必要权限。

mysqladmin 是 MySQL 数据库管理员的强大工具,特别适合在脚本和自动化任务中使用。虽然许多操作也可以通过 MySQL 客户端执行,但 mysqladmin 提供了更直接和简洁的命令行界面。

相关推荐
|华|2 小时前
MySQL高可用详细解析
数据库·mysql
何中应2 小时前
MindMap问题
运维·服务器·xmind
Carino_U3 小时前
MySQL中Explain详解与索引最佳实践
数据库·mysql
不才小强3 小时前
Linux网络调试工具:curl与抓包实战
linux·运维·网络
蜡台3 小时前
Mysql 安装使用时常见问题解决记录
数据库·mysql
PD我是你的真爱粉3 小时前
MySQL 事务与并发控制:从日志底层到 MVCC 哲学
android·mysql·adb
长不大的小Tom3 小时前
计算机软件资格考试——数据库系统工程师 考点分析
服务器·sql
极创信息3 小时前
企业信创产品认证全流程:从信创适配到信创认证的实操指南(2026版)
java·数据库·spring boot·mysql·matlab·mybatis·软件工程
我还为发觉3 小时前
Linux 监控可视化|Prometheus+Node Exporter 一键部署教程
linux·运维·prometheus