mysqldump命令
介绍:一个数据库备份程序
格式:mysqldump [options] [db_name [tbl_name ...]]描述:mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据。它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器。 mysqldump命令还可以生成CSV,其他分隔文本或XML格式的输出。
快速熟悉
导出结构:
mysqldump -h127.0.0.1 -uroot -P3306 -p -d btmox>./btmox.sql
mysqldump -h127.0.0.1 -uroot -P3306 -p -d mxhy>./mxhy.sql
导出结构和数据:
mysqldump -h127.0.0.1 -uroot -P3306 -p btmox>./btmox-data.sql
mysqldump -h127.0.0.1 -uroot -P3306 -p mxhy>./mxhy-data.sql
导入sql文件:
mysql -h127.0.0.1 -uroot -P3306 -p btmox< ./btmox-data.sql
mysql -h127.0.0.1 -uroot -P3306 -p mxhy< ./mxhy-data.sql
授权:
grant all privileges on *.* to 'root'@'%' identified by '6NbAFQBE';
grant all privileges on *.* to 'dbmanager'@'%' identified by '6NbAFQBE';
FLUSH PRIVILEGES;
ps:
楼主使用的mysql5.7 版本不可以直接明文输入密码,想想也有道理,防止黑客通过history历史记录就可以轻松获取你的数据库密码。
报错信息:mysqldump: [Warning] Using a password on the command line interface can be insecure.
-h127.0.01 不要写成 -hlocalhost
报错信息:mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect
部分常用的参数【Options】
·--host = host_name,-h host_name
从给定主机上的MySQL服务器转储数据。默认主机是localhost。
· - password [=密码], - p [密码]
连接服务器时使用的密码。如果使用短选项表单(-p),则选项和密码之间不能有空格。如果
你在命令行上的--password或-p选项后面省略了密码值,mysqldump会提示输入密码值。
在命令行上指定密码应该被认为是不安全的。请参见第6.1.2.1节“密码安全的最终用户指南”。你可以使用
选项文件,以避免在命令行上提供密码。
·--port = port_num,-P port_num
用于连接的TCP / IP端口号。
·--user = user_name,-u user_name
连接到服务器时使用的MySQL用户名。
您还可以使用--var_name = value语法设置以下变量:
·--all-databases,-A
转储所有数据库中的所有表。 这与使用--databases选项并命名命令行上的所有数据库相同。
·--databases,-B
转储几个数据库。 通常,mysqldump将命令行上的第一个名称参数视为数据库名称,将后续名称视为表名称。同
此选项,它将所有名称参数视为数据库名称。 CREATE DATABASE和USE语句包含在每个新数据库之前的输出中。
此选项可用于转储INFORMATION_SCHEMA和performace_schema数据库,这些数据库通常即使使用--all-databases选项也不会转储。
·--ignore-table = db_name.tbl_name
不要转储给定的表,必须使用数据库和表名来指定该表。 要忽略多个表,请多次使用此选项。
此选项也可用于忽略视图。
·--no-data,-d
不要写任何表行信息(即不要转储表内容)。 如果要仅转储CREATE TABLE语句,这将非常有用
table(例如,通过加载转储文件来创建表的空副本)
ps:
另一种重新加载转储文件的方法:
shell> mysql -e "source /path-to-backup/backup-file.sql" db_name
可以使用一个命令转储多个数据库:
shell> mysqldump --databases db_name1 [db_name2 ...]> my_databases.sql
要转储所有数据库,请使用--all-databases选项:
shell> mysqldump --all-databases> all_databases.sql
mysqldump对于通过将数据从一个MySQL服务器复制到另一个MySQL服务器来填充数据库非常有用:
shell> mysqldump --opt db_name | mysql --host = remote_host -C db_name