常用命令

这些命令都是与MySQL数据库相关的命令,以下是它们的作用简介:

  • mysql: 用于连接MySQL数据库服务器并进行交互式的命令行操作。

  • mysqladmin: 用于管理MySQL数据库服务器,例如创建、删除、重命名数据库,管理用户帐户等。

  • mysqlbinlog: 用于解析并输出MySQL二进制日志文件中的内容,以用于备份或复制。

  • mysqlcheck: 用于检查、修复、优化MySQL数据库中的表。

  • mysql_config: 用于获取MySQL编译和安装时的配置选项信息。

  • mysql_config_editor: 用于创建、编辑和管理MySQL客户端的加密登录信息。

  • mysqld: 是MySQL服务器的主要二进制可执行文件,用于启动MySQL服务器。

  • mysqld_exporter: 用于从MySQL服务器中提取监控指标,以便将其发送到Prometheus等监控系统。

  • mysqld-debug: 类似于mysqld,但启动时启用了调试选项。

  • mysqldump: 用于将MySQL数据库中的数据、结构和对象导出到文件中。

  • mysqldumpslow: 用于分析和汇总MySQL慢查询日志文件中的查询。

  • mysqlimport: 用于将数据从文本文件中导入到MySQL数据库表中。

  • mysql_install_db: 用于初始化MySQL数据库的数据目录和系统表。

  • mysqlpump: 是mysqldump的升级版本,支持多线程和并行导出,提高导出性能。

  • mysql_plugin: 用于安装、卸载和显示MySQL插件。

  • mysql_secure_installation: 用于通过一系列交互式问题来加固MySQL数据库的安全性。

  • mysqlshow: 用于显示MySQL数据库中的表、列和索引等对象的信息。

  • mysqlslap: 用于模拟并测试MySQL服务器的负载能力和性能。

  • mysql_tzinfo_to_sql: 用于将时区信息转换成MySQL时区表的SQL语句。

  • mysql_upgrade: 用于升级MySQL数据库的系统表和元数据,以适应新版本的MySQL。


mysqld

常见用法:

  • mysqld --defaults-file=/path/to/my.cnf: 指定配置文件启动mysqld。

  • mysqld --initialize: 初始化mysqld,生成默认的系统表和管理员账号。

  • mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql: 指定mysqld运行时的用户和MySQL安装目录、数据目录的位置。

  • mysqld --bind-address=127.0.0.1: 指定mysqld监听的IP地址。

  • mysqld --port=3307: 指定mysqld监听的端口号。

  • mysqld --skip-grant-tables: 启动mysqld时跳过授权表的读取,可以用于重置MySQL root用户的密码。

其他用法:

  • mysqld --help: 显示帮助信息。

  • mysqld --version: 显示版本信息。

  • mysqld --verbose: 打印更多调试信息。

  • mysqld --log-error=/path/to/error.log: 指定错误日志的输出位置。

  • mysqld --pid-file=/path/to/mysqld.pid: 指定mysqld进程ID文件的位置。

  • mysqld --skip-networking: 禁用网络连接,只允许本地连接。

  • mysqld --skip-syslog: 不向系统日志输出信息,改为输出到文件或控制台。

  • mysqld --skip-name-resolve: 禁用DNS反解析,加快连接速度。

  • mysqld --skip-character-set-client-handshake: 禁用字符集协商,强制使用服务器默认字符集。

  • mysqld --skip-innodb: 禁用InnoDB存储引擎。

  • mysqld --innodb-buffer-pool-size=256M: 指定InnoDB缓冲池大小为256MB。

  • mysqld --performance-schema=OFF: 禁用性能模式。

  • mysqld --secure-file-priv=/path/to/directory: 指定允许使用LOAD DATA和SELECT INTO OUTFILE的目录。

  • mysqld --lower-case-table-names=1: 强制将所有表名转换为小写。

  • mysqld --max-connections=500: 指定最大连接数为500。

  • mysqld --max-allowed-packet=64M: 指定最大允许的数据包大小为64MB。

  • mysqld --thread-cache-size=128: 指定线程池缓存大小为128个线程。

  • mysqld --skip-show-database: 禁用SHOW DATABASES命令。

  • mysqld --init-file=/path/to/init.sql: 指定启动时需要执行的SQL文件。


mysqladmin

mysqladmin 命令是 MySQL 的一个管理工具,可以用于执行许多管理任务。以下是一些常用的 mysqladmin 命令用法:

创建和删除数据库:

mysqladmin -u root -p create <database_name>
mysqladmin -u root -p drop <database_name>

查看 MySQL 运行状态:

mysqladmin -u root -p status

查看 MySQL 的版本信息:

mysqladmin -u root -p version

查看 MySQL 的进程列表:

mysqladmin -u root -p processlist

重新加载 MySQL 的权限表:

mysqladmin -u root -p reload

强制关闭 MySQL 服务器:

mysqladmin -u root -p shutdown

更改 MySQL root 用户的密码:

mysqladmin -u root password "newpassword"

查看 MySQL 当前打开的连接数和请求数:

mysqladmin -u root -p extended-status | grep -w 'Threads_connected\|Threads_running\|Queries'

可以使用 mysqladmin --help 命令查看更多的用法和参数说明。使用 mysqladmin 命令可以方便地管理 MySQL 数据库服务器,包括创建、删除、查看数据库,查看 MySQL 运行状态,重新加载权限表,更改 root 用户密码等任务。


mysqlbinlog

mysqlbinlog 是 MySQL 数据库的二进制日志解析器,它可以解析 MySQL 二进制日志文件,提供对日志事件的详细解释和解码。以下是一些常用的 mysqlbinlog 命令用法:

查看二进制日志的内容:

mysqlbinlog <log_file_name>

将二进制日志文件转换为 SQL 语句格式:

mysqlbinlog <log_file_name> --base64-output=decode-rows > <sql_file_name>

查看二进制日志文件中的所有事件:

mysqlbinlog <log_file_name> | less

从指定时间点开始解析二进制日志:

mysqlbinlog <log_file_name> --start-datetime="<datetime>" > <sql_file_name>

从指定位置开始解析二进制日志:

mysqlbinlog <log_file_name> --start-position=<position> > <sql_file_name>

解析某个时间段内的二进制日志:

mysqlbinlog <log_file_name> --start-datetime="<start_datetime>" --stop-datetime="<stop_datetime>" > <sql_file_name>

从某个时间点开始解析二进制日志并限制输出条目数量:

mysqlbinlog <log_file_name> --start-datetime="<datetime>" -v -n <number_of_events> > <sql_file_name>

可以使用 mysqlbinlog --help 命令查看更多的用法和参数说明。mysqlbinlog 命令对于了解 MySQL 的二进制日志文件非常有用,它可以帮助用户分析二进制日志中的事件,重现 SQL 查询和其他数据库操作,并帮助用户进行故障排除和数据恢复。


mysqlcheck

mysqlcheck 是 MySQL 中的一个命令行工具,用于检查、修复和分析数据库表。下面是一些常见的用法:

检查表

检查指定表或所有表是否存在错误:

mysqlcheck [options] dbname [tblname ...]
mysqlcheck [options] --databases dbname1 [dbname2 ...]
mysqlcheck [options] --all-databases

其中,dbname 为要检查的数据库名称,tblname 为要检查的表名称,--databases 用于检查多个数据库,--all-databases 用于检查所有数据库。

修复表

修复指定表或所有表的错误:

mysqlcheck [options] --repair dbname [tblname ...]
mysqlcheck [options] --repair --databases dbname1 [dbname2 ...]
mysqlcheck [options] --repair --all-databases

其中,--repair 选项用于修复错误。

优化表

优化指定表或所有表:

mysqlcheck [options] --optimize dbname [tblname ...]
mysqlcheck [options] --optimize --databases dbname1 [dbname2 ...]
mysqlcheck [options] --optimize --all-databases

其中,--optimize 选项用于优化表。

分析表

分析指定表或所有表:

mysqlcheck [options] --analyze dbname [tblname ...]
mysqlcheck [options] --analyze --databases dbname1 [dbname2 ...]
mysqlcheck [options] --analyze --all-databases

其中,--analyze 选项用于分析表。

检查并修复表

检查并修复指定表或所有表的错误:

mysqlcheck [options] --auto-repair dbname [tblname ...]
mysqlcheck [options] --auto-repair --databases dbname1 [dbname2 ...]
mysqlcheck [options] --auto-repair --all-databases

其中,--auto-repair 选项用于检查并修复错误。

以上是 mysqlcheck 的一些常见用法,还有其他选项和用法可以通过 mysqlcheck --help 命令查看。


mysql_config

mysql_config 是一个用于获取 MySQL 安装的配置信息的命令行工具,它主要用于获取 MySQL 的编译参数、库文件、头文件、版本号等信息。以下是 mysql_config 命令的一些常见用法:

显示 MySQL 的编译器参数和库文件信息:

mysql_config --cflags --libs

获取 MySQL 的编译参数:

mysql_config --configure

显示 MySQL 头文件的位置:

mysql_config --include

显示 MySQL 库文件的位置:

mysql_config --libs

显示 MySQL 的版本号:

mysql_config --version

显示 MySQL 安装目录:

mysql_config --prefix

显示 MySQL 的配置文件路径:

mysql_config --variable=pid-file

显示 MySQL 的数据目录:

mysql_config --variable=datadir

注意:在使用 mysql_config 命令时,需要确保环境变量 PATH 中包含 MySQL 的安装路径,否则需要使用绝对路径来调用该命令。

显示 MySQL 的安装目录下的 include 文件夹的路径:

mysql_config --variable=includedir

显示 MySQL 的安装目录下的 lib 文件夹的路径:

mysql_config --variable=libdir

显示 MySQL 的安装目录下的 bin 文件夹的路径:

mysql_config --variable=bindir

显示 MySQL 安装所使用的编译器:

mysql_config --cc

显示 MySQL 的字符集编码:

mysql_config --variable=charset

显示 MySQL 的 SSL 库文件位置:

mysql_config --variable=ssl

显示 MySQL 的压缩库文件位置:

mysql_config --variable=embedded

注意:mysql_config 支持的用法可能会因 MySQL 的不同版本而略有差异。可以使用 mysql_config --help 命令来查看当前版本的 mysql_config 命令的具体用法。


mysql_config_editor

mysql_config_editor是MySQL的一个工具,可用于创建和管理MySQL登录凭据文件,其中包含MySQL连接所需的用户名、密码和主机地址等信息。使用该工具可以加强MySQL连接的安全性,避免直接暴露在命令行或脚本中的敏感信息,从而减少恶意访问和攻击的风险。

例如,你可以使用 mysql_config_editor 来创建一个加密的登录路径文件,其中包含 MySQL 登录所需的用户名和密码,然后在 MySQL 命令行或脚本中引用该登录路径文件。这样,你就可以将登录信息安全地存储在文件中,并且可以在需要时方便地修改它们,而不必担心敏感信息会被泄露。

mysql_config_editor set --help

  • -h, --host=name:输入到登录文件的主机名。

  • -G, --login-path=name:在登录文件中使用的登录路径的名称。 (默认值:client)

  • -p, --password:提示输入要输入到登录文件中的密码。

  • -u, --user=name:输入到登录文件的用户名。

  • -S, --socket=name:输入到登录文件的套接字路径。

  • -P, --port=name:输入到登录文件的端口号。

  • -w, --warn:如果set命令尝试覆盖现有的登录路径,则警告并询问确认(默认启用)。 (默认值为on;使用--skip-warn禁用)

  • Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options):包括可变选项和布尔选项。 其中,可变选项值(--variable-name=value)和布尔选项值{FALSE|TRUE}在读取选项后具有的值在后面给出。

  • host:没有默认值。

  • login-path:默认值为client。

  • user:没有默认值。

  • socket:没有默认值。

  • port:没有默认值。

  • warn:默认值为TRUE,表示在覆盖现有登录路径时发出警告并询问确认,可以使用--skip-warn禁用此功能。

下面是 mysql_config_editor 的用法示例:

创建登录凭据文件

mysql_config_editor set --login-path=login_name --host=host_name --user=user_name --port=3307 --password

该命令将会创建一个登录凭据文件,并为其分配一个登录名(login_name),该登录名可以用于 mysql 命令行工具中进行连接。执行该命令后,程序会提示输入与该登录名相关的主机名、用户名和密码,如果密码留空,则系统会提示输入密码。

查看已创建的登录凭据

mysql_config_editor print --all

该命令将会列出所有已经创建的登录凭据文件,包括登录名、主机名和用户名等信息。

查看特定的登录凭据

mysql_config_editor print --login-path=login_name

该命令将会查看指定登录名对应的登录凭据文件的详细信息,包括主机名、用户名和密码等。

修改特定的登录凭据

就是再执行一次创建命令,保存时会提示是否覆盖

mysql_config_editor set --login-path=login_name --host=host_name --user=user_name --password

该命令将会修改指定登录名对应的登录凭据文件的详细信息,包括主机名、用户名和密码等。执行该命令后,程序会提示输入与该登录名相关的主机名、用户名和密码,如果密码留空,则系统会提示输入密码。

删除特定的登录凭据

mysql_config_editor remove --login-path=login_name

该命令将会删除指定登录名对应的登录凭据文件。执行该命令前,需确认该操作是否正确。

注意:在 mysql_config_editor 命令行中,选项必须在参数之前指定。执行任何敏感操作时,请确认操作是否正确,以免造成不可逆的影响。

凭据在mysql命令时调用

使用以下命令调用 mysql_config_editor 中保存的凭据:

mysql --login-path=login_name db_name

其中,login_name 是使用 mysql_config_editor 创建的登录路径的名称,db_name 是你要连接的数据库的名称。

在运行该命令之前,你需要先通过 mysql_config_editor 创建登录路径并将其保存在 ~/.mylogin.cnf%APPDATA%\MySQL\.mylogin.cnf文件中(具体路径可能因不同的操作系统而异)。 .mylogin.cnf 文件中存储的是加密后的登录凭据,不是明文的。当你使用 mysql_config_editor 创建登录路径并保存登录凭据时,它会对密码进行加密,并将加密后的登录凭据保存到 .mylogin.cnf 文件中。


mysqldump

mysqldump是MySQL自带的备份工具,支持备份单个或多个数据库、备份整个服务器以及备份特定的表等。

mysqldump命令的常见参数如下:

  • -u: 指定登录MySQL的用户名;

  • -p: 指定登录MySQL的密码;

  • -h: 指定MySQL服务器的主机名或IP地址;

  • --port: 指定MySQL服务器的端口号;

  • --databases: 指定要备份的数据库,可同时指定多个,以空格分隔;

  • --tables: 指定要备份的表,可同时指定多个,以空格分隔;

  • --ignore-table: 指定要忽略备份的表,可同时指定多个,以空格分隔;

  • --routines: 备份存储过程和函数;

  • --events: 备份事件;

  • --triggers: 备份触发器;

  • --single-transaction: 在备份过程中使用事务,确保备份的一致性;

  • --lock-tables: 在备份过程中锁定所有要备份的表;

  • --flush-logs: 在备份前刷新二进制日志,确保备份的一致性;

  • --flush-privileges: 备份后刷新权限表;

  • --hex-blob: 将二进制数据以十六进制格式输出;

  • --default-character-set: 指定备份文件的字符集;

  • --result-file: 指定备份文件的输出路径和文件名;

  • --column-statistics: 收集并输出表和列的统计信息;

  • --comments: 在备份文件中输出注释;

  • --compact: 以紧凑格式输出备份文件;

  • --skip-add-drop-table: 不在备份文件中包含删除和创建表的语句;

  • --skip-add-locks: 不在备份文件中包含加锁语句;

  • --skip-disable-keys: 不在备份文件中包含禁用索引的语句;

  • --skip-set-charset: 不在备份文件中包含设置字符集的语句;

  • --skip-extended-insert: 不使用扩展插入语句;

  • --add-drop-database: 在备份文件中包含删除数据库的语句;

  • --add-drop-table: 在备份文件中包含删除和创建表的语句;

  • --add-locks: 在备份文件中包含加锁语句;

  • --add-drop-trigger: 在备份文件中包含删除和创建触发器的语句;

  • --add-drop-index: 在备份文件中包含删除和创建索引的语句;

  • --add-drop-foreign-key: 在备份文件中包含删除和创建外键的语句;

  • --lock-all-tables: 在备份过程中锁定所有的表,包括MySQL系统表;

  • --master-data: 在备份文件中输出二进制日志的位置信息;

  • --set-gtid-purged: 指定备份文件中包含的GTID信息;

  • --skip-opt: 不使用优化

常见的mysqldump用法:

导出指定的数据库 css Copy code mysqldump -u [用户名] -p [数据库名] > [导出的文件名].sql 导出指定的表 css Copy code mysqldump -u [用户名] -p [数据库名] [表名] > [导出的文件名].sql 导出指定的数据 css Copy code mysqldump -u [用户名] -p [数据库名] [表名] --where="[条件]" > [导出的文件名].sql 导出指定的字段 css Copy code mysqldump -u [用户名] -p [数据库名] [表名] --fields="[字段1,字段2]" > [导出的文件名].sql 导出指定的存储过程和函数 css Copy code mysqldump -u [用户名] -p --routines [数据库名] > [导出的文件名].sql 导出指定的视图 css Copy code mysqldump -u [用户名] -p --triggers --events [数据库名] > [导出的文件名].sql 导出压缩文件 css Copy code mysqldump -u [用户名] -p [数据库名] | gzip > [导出的文件名].sql.gz 导出到远程主机 css Copy code mysqldump -u [用户名] -p [数据库名] | ssh [远程主机用户名]@[远程主机IP] 'cat > [导出的文件名].sql' 导出到远程主机并压缩 css Copy code mysqldump -u [用户名] -p [数据库名] | gzip | ssh [远程主机用户名]@[远程主机IP] 'cat > [导出的文件名].sql.gz'

注意,这里的方括号只是为了表示选项和参数,实际使用时不需要输入方括号。

最后更新于