
↓点击关注公众号↓
登录数据库
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 REPLICA | 8.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 | 使用十六进制表示法转储二进制列 | ||
| --host | MySQL服务器所在主机 | ||
| --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-length | TCP/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
命令导入数据的案例:
打开终端或命令提示符。
输入以下命令连接到 MySQL 数据库:
mysql -h localhost -u root -p然后输入密码以登录到 MySQL。
创建一个名为
employees
的数据库:CREATE DATABASE employees;切换到
employees
数据库:USE employees;使用
source
命令导入数据:source /path/to/employees.sql;将
/path/to/employees.sql
替换为employees.sql
文件的实际路径。等待导入过程完成。MySQL 会逐行执行 SQL 文件中的语句,并将数据插入到
employees
数据库中。
请确保 employees.sql
文件包含正确的 SQL 语句和语法,并且与目标数据库兼容。
↓点击关注公众号↓




