暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

IT后浪 2024-01-15
64


点击关注公众号↓

登录数据库

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连接模式,可选值为DISABLED
    REQUIRED
    VERIFY_CA
    VERIFY_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
命令的可选参数,可以根据需要选择使用。

选项参数

参考链接:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

选项名称描述介绍已弃用
--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 SLAVE
8.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 语句和语法,并且与目标数据库兼容。

点击关注公众号↓


文章转载自IT后浪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论