在MySQL WorkBench的Server Administrator中双击要连接的数据库;
点击左边的Data Export,在右边的数据库列表中选择要导出的数据库;
Export to Dump Project Folder是每张表导出一个.sql文件,Export to Self-Contained File是整个数据库导出一个.sql文件,这里选择Export to Self-Contained File,选择.sql文件保存路径,下面还有是否导出存储过程,是否忽略数据等选项;
点击Start Export按钮,导出数据库
打开导出的.sql文件,可见已经导出了整个数据库。
MySQL数据库导出与导入的过程中将会发生众多不可预知的错误,本文整理了一些常见错误及相应的解决方法,遇到类似情况的朋友可以参考下,希望对大家有所帮助
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd
MySQL中到bin文件夹的目录
如我输入的命令行:cd
C:Program
FilesMySQLMySQL
Server
4.1bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump
-u
用户名
-p
数据库名
>
导出的文件名
如我输入的命令行:mysqldump
-u
root
-p
jluibmclub
>
d:
jluibmclub
.sql
(输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
在用命令做数据库备份过程在cmd命令框中输入C:/mysql/bin>mysqldump
-uroot
-p
jluibmclub>
d:
jluibmclub
.sql
报错信息:mysqldump:
Got
error:
1049:
Unknown
database
'
jluibmclub
'
when
selecting
the
database
,识别不了
jluibmclub
这个数据库。
但是我在:
mysql>
show
databases
显示:
+---------------+
|
Database
|
+---------------+
|
jpa
|
+---------------+
mysql>use
jpa
显示:
Database
changed
其原因很简单,只要记住一点。没进入mysql环境不算执行sql语句,所以不用在其后加入逗号(“”)。
如果进入mysql环境mysql>
,则输入的语句属于sql语句了,在其最后一定要加上逗号(“”)。
3、会看到文件news.sql自动生成到d盘下文件,如果不指定盘符默认在bin目录下。
命令行导入数据库:
1,进入MySQL:mysql
-u
用户名
-p
如我输入的命令行:mysql
-u
root
-p
(输入同样后会让你输入MySQL的密码)
2,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
3,输入:mysql>use
目标数据库名
如我输入的命令行:mysql>use
news
4,导入文件:mysql>source
导入的文件名
如我输入的命令行:mysql>source
news.sql(如果在bin目录下用相对路径名,如果在其他目录下用绝对目录名)
MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。
1.Win32下MySQL的备份与还原
项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access deniedyou need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。
处理方式:
1. 在原库中批量修改对象所有者为导入账号或修改 SQL SECURITY 为 Invoker;2. 使用 mysqldump 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个 DEFINER 和一个 SQL SECURITY 的属性,如下所示:
--视图定义CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test
--函数定义CREATE DEFINER=`root`@`%` FUNCTION `f_test()` RETURNS varchar(100) SQL SECURITY DEFINER
--存储过程定义CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER
--触发器定义CREATE DEFINER=`root`@`%` trigger t_test
--事件定义CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:对象定义者,在创建对象时可以手动指定用户,不指定的话默认为当前连接用户;
SQL SECURITY:指明以谁的权限来执行该对象,有两个选项,一个为 DEFINER,一个为 INVOKER,默认情况下系统指定为 DEFINER;DEFINER:表示按定义者的权限来执行; INVOKER:表示按调用者的权限来执行。
如果导入账号具有 SUPER 权限,即使对象的所有者账号不存在,也可以导入成功,但是在查询对象时,如果对象的 SQL SECURITY 为 DEFINER,则会报账号不存在的报错。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改写好处:1. 可以避免还原时遇到 DEFINER 报错相关问题;2. 根据输出信息知道备份是否正常进行,防止备份中遇到元数据锁无法获取然后一直卡住的情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)