常用命令
这些命令都是与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
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'
注意,这里的方括号只是为了表示选项和参数,实际使用时不需要输入方括号。最后更新于