MySql常用命令,命令行操作必备

148 阅读10分钟

da2199e6510640999bf17cf2e6edd259_2.png

登录数据库

mysql -h <host> -P <port> -u <username> -p<password> --database=<database> --ssl-mode=<ssl_mode> --ssl-ca=<ca_certificate> --ssl-cert=<client_certificate> --ssl-key=<client_key> --default-auth=<authentication_plugin>

参数解释

  • -h <host>:指定MySQL服务器的主机名或IP地址。
  • -P <port>:指定MySQL服务器的端口号,默认为3306。
  • -u <username>:指定要使用的用户名。
  • -p<password>:指定密码。注意,密码紧跟在-p后面,中间没有空格;如果不指定该参数,系统将尝试以无密码登录。
  • --database=<database>:指定要连接的数据库。
  • --ssl-mode=<ssl_mode>:指定SSL连接模式,可选值为DISABLEDREQUIREDVERIFY_CAVERIFY_IDENTITY
  • --ssl-ca=<ca_certificate>:指定CA证书文件的路径。
  • --ssl-cert=<client_certificate>:指定客户端证书文件的路径。
  • --ssl-key=<client_key>:指定客户端私钥文件的路径。
  • --default-auth=<authentication_plugin>:指定默认的身份验证插件。

注意:参数之间使用空格分隔,密码紧跟在-p后面,中间没有空格。

参考案例

1、指定用户名,使用默认主机<127.0.0.1>,默认端口号<3306>,进行登录

mysql -u root -p

-p 之后不指定密码,回车之后,需要手动输入密码

2、指定用户名、主机、端口号

mysql -h 192.168.1.1 -P 3307 -u root -p 

需要注意的是,-P 大写是至端口号,-p 小写是指 密码

查看数据库

方式一

show databases;

方式二

show schemas;

通过以上两种方式,都可以查看查看数据库,展示数据库列表,第一种方式更常用

切换数据库

use <database_name>;

<database_name> 是指MySQL的数据库名称

查看数据库表

show tables;

一定要先选择数据库,然后再查看数据库表,否者会提示 No database selected

备份数据库

一般来说,使用 mysqldump 有三种方式来备份数据,可以备份一个或多个表,一个或多个完整的数据库,或者整个 MySQL 服务器,具体如下所示:

mysqldump [选项] 数据库名 [表名 ...]
mysqldump [选项] --databases 数据库名 ...
mysqldump [选项] --all-databases

要备份整个数据库,不需要在 数据库名 后面指定任何表,或者使用 --databases--all-databases 选项。

要查看你的 mysqldump 版本支持的选项列表,可以执行命令 mysqldump --help

这里的 [选项] 是指 mysqldump 命令的可选参数,可以根据需要选择使用。

选项参数

参考链接dev.mysql.com/doc/refman/…

选项名称描述介绍已弃用
--add-drop-database在每个 CREATE DATABASE 语句之前添加 DROP DATABASE 语句
--add-drop-table在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--add-drop-trigger在每个 CREATE TRIGGER 语句之前添加 DROP TRIGGER 语句
--add-locks用 LOCK TABLES 和 UNLOCK TABLES 语句包围每个表转储
--all-databases转储所有数据库中的所有表
--allow-keywords允许创建作为关键字的列名称
--apply-replica-statements在 CHANGE REPLICATION SOURCE TO 语句之前包含 STOP REPLICA,并在输出结束时包含 START REPLICA8.0.26
--apply-slave-statements在 CHANGE MASTER 语句之前包含 STOP SLAVE,并在输出结束时包含 START SLAVE8.0.26
--bind-address使用指定的网络接口连接MySQL服务器
--character-sets-dir安装字符集的目录
--column-statistics编写 ANALYZE TABLE 语句生成统计直方图
--comments添加注释到转储文件
--compact产生更紧凑的输出
--compatible生成与其他数据库系统或较旧的 MySQL 服务器更兼容的输出
--complete-insert使用包含列名的完整 INSERT 语句
--compress压缩客户端和服务器之间发送的所有信息8.0.18
--compression-algorithms连接到服务器时允许的压缩算法8.0.18
--create-options在 CREATE TABLE 语句中包含所有 MySQL 特定的表选项
--databases将所有名称参数解释为数据库名称
--debug写入调试日志
--debug-check程序退出时打印调试信息
--debug-info程序退出时打印调试信息、内存和CPU统计信息
--default-auth要使用的身份验证插件
--default-character-set指定默认字符集
--defaults-extra-file除了通常的选项文件之外,还读取指定的选项文件
--defaults-file只读指定选项文件
--defaults-group-suffix选项组后缀值
--delete-master-logs在复制源服务器上,执行转储操作后删除二进制日志8.0.26
--delete-source-logs在复制源服务器上,执行转储操作后删除二进制日志8.0.26
--disable-keys对于每个表,用禁用和启用键的语句包围 INSERT 语句
--dump-date如果给出 --comments,则将转储日期包含为“转储完成日期”注释
--dump-replica包含 CHANGE REPLICATION SOURCE TO 语句,该语句列出副本源的二进制日志坐标8.0.26
--dump-slave包括列出副本源的二进制日志坐标的 CHANGE MASTER 语句8.0.26
--enable-cleartext-plugin启用明文身份验证插件
--events从转储数据库中转储事件
--extended-insert使用多行 INSERT 语法
--fields-enclosed-by该选项与 --tab 选项一起使用,与 LOAD DATA 的相应子句具有相同的含义
--fields-escaped-by该选项与 --tab 选项一起使用,与 LOAD DATA 的相应子句具有相同的含义
--fields-optionally-enclosed-by该选项与 --tab 选项一起使用,与 LOAD DATA 的相应子句具有相同的含义
--fields-terminated-by该选项与 --tab 选项一起使用,与 LOAD DATA 的相应子句具有相同的含义
--flush-logs在开始转储之前刷新 MySQL 服务器日志文件
--flush-privileges转储 mysql 数据库后发出 FLUSH PRIVILEGES 语句
--force即使在表转储期间发生 SQL 错误也继续
--get-server-public-key向服务器请求 RSA 公钥
--help显示帮助信息并退出
--hex-blob使用十六进制表示法转储二进制列
--hostMySQL服务器所在主机
--ignore-error忽略指定的错误
--ignore-table不要转储给定的表
--include-master-host-port在使用 --dump-slave 生成的 CHANGE MASTER 语句中包含 MASTER_HOST/MASTER_PORT 选项8.0.26
--include-source-host-port在使用 --dump-replica 生成的 CHANGE REPLICATION SOURCE TO 语句中包含 SOURCE_HOST 和 SOURCE_PORT 选项8.0.26
--insert-ignore编写 INSERT IGNORE 而不是 INSERT 语句
--lines-terminated-by该选项与 --tab 选项一起使用,与 LOAD DATA 的相应子句具有相同的含义
--lock-all-tables锁定所有数据库中的所有表
--lock-tables在转储之前锁定所有表
--log-error将警告和错误附加到指定文件
--login-path从 .mylogin.cnf 读取登录路径选项
--master-data将二进制日志文件名和位置写入输出8.0.26
--max-allowed-packet发送到服务器或从服务器接收的最大数据包长度
--mysqld-long-query-time慢查询阈值的会话值8.0.30
--net-buffer-lengthTCP/IP 和套接字通信的缓冲区大小
--network-timeout增加网络超时以允许更大的表转储
--no-autocommit将每个转储表的 INSERT 语句包含在 SET autocommit = 0 和 COMMIT 语句中
--no-create-db不要编写 CREATE DATABASE 语句
--no-create-info不要编写重新创建每个转储表的 CREATE TABLE 语句
--no-data不要转储表内容
--no-defaults不读取选项文件
--no-set-names与 --skip-set-charset 相同
--no-tablespaces不要在输出中写入任何 CREATE LOGFILE GROUP 或 CREATE TABLESPACE 语句
--opt--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 的简写
--order-by-primary转储每个表的按其主键或其第一个唯一索引排序的行
--password连接到服务器时使用的密码
--password1连接到服务器时使用的第一个多重身份验证密码8.0.27
--password2连接到服务器时使用的第二个多重身份验证密码8.0.27
--password3连接到服务器时使用的第三个多重身份验证密码8.0.27
--pipe使用命名管道连接到服务器(仅限 Windows)
--plugin-authentication-kerberos-client-mode允许在 Windows 上通过 MIT Kerberos 库进行 GSSAPI 可插入身份验证8.0.32
--plugin-dir插件安装目录
--port用于连接的 TCP/IP 端口号
--print-defaults打印默认选项
--protocol使用的传输协议
--quick从服务器检索表的行,一次一行
--quote-names在反引号字符内引用标识符
--replace编写 REPLACE 语句而不是 INSERT 语句
--result-file直接输出到给定文件
--routines从转储数据库转储存储例程(过程和函数)
--server-public-key-path包含 RSA 公钥的文件的路径名
--set-charset将 SET NAMES default_character_set 添加到输出
--set-gtid-purged是否在输出中添加SET @@GLOBAL.GTID_PURGED
--shared-memory-base-name共享内存连接的共享内存名称(仅限 Windows)
--show-create-skip-secondary-engine从 CREATE TABLE 语句中排除 SECONDARY ENGINE 子句8.0.18
--single-transaction从服务器转储数据之前发出 BEGIN SQL 语句
--skip-add-drop-table不要在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句
--skip-add-locks不加锁
--skip-comments不要在转储文件中添加注释
--skip-compact不产生更紧凑的输出
--skip-disable-keys不要禁用按键
--skip-extended-insert关闭扩展插入
--skip-generated-invisible-primary-key不要在转储文件中包含生成的不可见主键8.0.30
--skip-opt关闭--opt设置的选项
--skip-quick不要从服务器一次一行检索表的行
--skip-quote-names不要引用标识符
--skip-set-charset不要写 SET NAMES 语句
--skip-triggers不要转储触发器
--skip-tz-utc关闭 tz-utc
--socket要使用的 Unix 套接字文件或 Windows 命名管道
--source-data将二进制日志文件名和位置写入输出8.0.26
--ssl-ca包含受信任 SSL 证书颁发机构列表的文件
--ssl-capath包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl-cert包含 X.509 证书的文件
--ssl-cipher连接加密允许的密码
--ssl-crl包含证书吊销列表的文件
--ssl-crlpath包含证书吊销列表文件的目录
--ssl-fips-mode客户端是否启用FIPS模式8.0.34
--ssl-key包含 X.509 密钥的文件
--ssl-mode连接到服务器所需的安全状态
--ssl-session-data包含 SSL 会话数据的文件8.0.29
--ssl-session-data-continue-on-failed-reuse会话重用失败时是否建立连接8.0.29
--tab生成制表符分隔的数据文件
--tables覆盖 --databases 或 -B 选项
--tls-ciphersuites加密连接允许的 TLSv1.3 密码套件8.0.16
--tls-version加密连接允许的 TLS 协议
--triggers每个转储表的转储触发器
--tz-utc添加 SET TIME_ZONE='+00:00' 到转储文件
--user连接到服务器时使用的 MySQL 用户名
--verbose详细模式
--version显示版本信息并退出
--where仅转储由给定 WHERE 条件选择的行
--xml生成 XML 输出
--zstd-compression-level使用 zstd 压缩的服务器连接的压缩级别8.0.18

参考案例

备份单个数据库:

mysqldump -u <username> -p<password> <database> > <backup_file.sql>

备份多个数据库:

mysqldump -u <username> -p<password> --databases <database1> <database2> > <backup_file.sql>

备份所有数据库:

mysqldump -u <username> -p<password> --all-databases > <backup_file.sql>

备份指定表:

mysqldump -u <username> -p<password> <database> <table1> <table2> > <backup_file.sql>

备份数据库结构(不包含数据):

mysqldump -u <username> -p<password> --no-data <database> > <backup_file.sql>

备份数据库数据(不包含结构):

mysqldump -u <username> -p<password> --no-create-info <database> > <backup_file.sql>

备份数据库结构和数据到压缩文件:

mysqldump -u <username> -p<password> <database> | gzip > <backup_file.sql.gz>

备份数据库结构和数据到指定日期的文件:

mysqldump -u <username> -p<password> <database> > <backup_file_$(date +%Y%m%d).sql>

上述命令中的 <username> 是指连接数据库的用户名,<password> 是指连接数据库的密码,<database> 是指要备份的数据库名,<table> 是指要备份的表名,<backup_file> 是指备份文件的路径和名称。你需要根据实际情况替换这些参数。

警告提示

mysqldump: [Warning] Using a password on the command line interface can be insecure.

用于连接服务器的 MySQL 账户密码。密码值是可选的。如果未给出,mysqldump 会提示输入密码。如果给定,--password= 或 -p 与后面的密码之间必须没有空格

导入数据库

MySQL的source命令,可以将数据库文件导入到数据库中,该命令需要先登录到数据库中,操作步骤如下

假设您有一个名为 employees 的数据库,并且有一个名为 employees.sql 的 SQL 文件,其中包含了创建表和插入数据的语句。以下是一个使用 mysql source 命令导入数据的案例:

  1. 打开终端或命令提示符。

  2. 输入以下命令连接到 MySQL 数据库:

    mysql -h localhost -u root -p
    

    然后输入密码以登录到 MySQL。

  3. 创建一个名为 employees 的数据库:

    CREATE DATABASE employees;
    
  4. 切换到 employees 数据库:

    USE employees;
    
  5. 使用 source 命令导入数据:

    source /path/to/employees.sql;
    

    /path/to/employees.sql 替换为 employees.sql 文件的实际路径。

  6. 等待导入过程完成。MySQL 会逐行执行 SQL 文件中的语句,并将数据插入到 employees 数据库中。

请确保 employees.sql 文件包含正确的 SQL 语句和语法,并且与目标数据库兼容。