mysql数据库备份与还原命令及测试代码

时间:2024.5.8

mysql数据库备份与还原命令及测试代码

还原一个数据库:mysql -h localhost -u root -p123456 www

备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql

其中WWW为数据库名

//以下是在程序中进行测试

//$command = “mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile”;

$command=”mysqldump -h localhost -u root -p123456 guestbook > guestbook2-29.sql”; system($command);

echo “success”;

备份MySQL数据库的命令

mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql

备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql 直接将MySQL数据库压缩备份

mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz 备份MySQL数据库某个(些)表

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql

同时备份多个MySQL数据库

mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql

仅仅备份数据库结构

mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql

备份服务器上所有数据库

mysqldump –all-databases > allbackupfile.sql

还原MySQL数据库的命令

mysql -hhostname -uusername -ppassword databasename < backupfile.sql

还原压缩的MySQL数据库

gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename

将数据库转移到新服务器

mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename

几个常用用例:

1.导出整个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u root -p dataname >dataname.sql

这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.

2.导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u root -p dataname users> dataname_users.sql

3.导出一个数据库结构

mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql

-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库

常用source 命令

进入mysql数据库控制台,

如mysql -u root -p

mysql>use 数据库

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

mysql>source d:\wcnc_db.sql

mysqldump支持下列选项:

–add-locks

在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。

–add-drop-table

在每个create语句之前增加一个drop table。

–allow-keywords

允许创建是关键词的列名字。这由表名前缀于每个列名做到。

-c, –complete-insert

使用完整的insert语句(用列名字)。

-C, –compress

如果客户和服务器均支持压缩,压缩两者间所有的信息。

–delayed

用INSERT DELAYED命令插入行。

-e, –extended-insert

使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)

-#, –debug[=option_string]

跟踪程序的使用(为了调试)。

–help

显示一条帮助消息并且退出。

–fields-terminated-by=…

–fields-enclosed-by=…

–fields-optionally-enclosed-by=…

–fields-escaped-by=…

–fields-terminated-by=…

这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。 LOAD DATA INFILE语法。

-F, –flush-logs

在开始导出前,洗掉在MySQL服务器中的日志文件。

-f, –force,

即使我们在一个表导出期间得到一个SQL错误,继续。

-h, –host=..

从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。

-l, –lock-tables.

为开始导出锁定所有表。

-t, –no-create-info

不写入表创建信息(CREATE TABLE语句)

-d, –no-data

不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!

–opt

同–quick –add-drop-table –add-locks –extended-insert –lock-tables。

应该给你为读入一个MySQL服务器的尽可能最快的导出。

-pyour_pass, –password[=your_pass]

与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

-P port_num, –port=port_num

与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

-q, –quick

不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。

-S /path/to/socket, –socket=/path/to/socket

与localhost连接时(它是缺省主机)使用的套接字文件。

-T, –tab=path-to-some-directory

对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和 –lines–xxx选项来定。

-u user_name, –user=user_name

与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option, –set-variable var=option

设置一个变量的值。可能的变量被列在下面。

-v, –verbose

冗长模式。打印出程序所做的更多的信息。

-V, –version

打印版本信息并且退出。

-w, –where=’where-condition’

只导出被选择了的记录;注意引号是强制的!

“–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″

最常见的mysqldump使用可能制作整个数据库的一个备份:

mysqldump –opt database > backup-file.sql

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的: mysqldump –opt database | mysql –host=remote-host -C database

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

shell> mysqladmin create target_db_name

shell> mysql target_db_name < backup-file.sql

就是shell> mysql 库名 < 文件名

//mysql权限管理

mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为:

grant 权限 on 数据库对象 to 用户

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。 grant select on testdb.* to common_user@’%’

grant insert on testdb.* to common_user@’%’

grant update on testdb.* to common_user@’%’

grant delete on testdb.* to common_user@’%’

或者,用一条 mysql 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@’%’

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。 grant 创建、修改、删除 mysql 数据表结构权限。

grant create on testdb.* to developer@’192.168.0.%’;

grant alter on testdb.* to developer@’192.168.0.%’;

grant drop on testdb.* to developer@’192.168.0.%’;

grant 操作 mysql 外键权限。

grant references on testdb.* to developer@’192.168.0.%’;

grant 操作 mysql 临时表权限。

grant create temporary tables on testdb.* to developer@’192.168.0.%’;

grant 操作 mysql 索引权限。

grant index on testdb.* to developer@’192.168.0.%’;

grant 操作 mysql 视图、查看视图源代码 权限。

grant create view on testdb.* to developer@’192.168.0.%’;

grant show view on testdb.* to developer@’192.168.0.%’;

grant 操作 mysql 存储过程、函数 权限。

grant create routine on testdb.* to developer@’192.168.0.%’; - now, can show procedure status grant alter routine on testdb.* to developer@’192.168.0.%’; - now, you can drop a procedure grant execute on testdb.* to developer@’192.168.0.%’;

三、grant 普通 dba 管理某个 mysql 数据库的权限。

grant all privileges on testdb to dba@’localhost’

其中,关键字 “privileges” 可以省略。

四、grant 高级 dba 管理 mysql 中所有数据库的权限。

grant all on *.* to dba@’localhost’

五、mysql grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 mysql 服务器上:

grant select on *.* to dba@localhost; - dba 可以查询 mysql 中所有数据库中的表。 grant all on *.* to dba@localhost; - dba 可以管理 mysql 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to dba@localhost; - dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to ’dba’@’localhost’

grant execute on function testdb.fn_add to ’dba’@’localhost’

六、查看 mysql 用户权限

查看当前用户(自己)权限:

show grants;

查看其他 mysql 用户权限:

show grants for dba@localhost;

七、撤销已经赋予给 mysql 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可: grant all on *.* to dba@localhost;

revoke all on *.* from dba@localhost;

八、mysql grant、revoke 用户权限注意事项

1. grant, revoke 用户权限后,该用户只有重新连接 mysql 数据库,权限才能生效。

2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“ grant select on testdb.* to dba@localhost with grant option;

这个特性一般用不到。实际中,数据库权限最好由 dba 来统一管理。

注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:flush privileges。

查看用户权限

show grants for 你的用户

比如:

show grants for root@'localhost';


第二篇:数据库备份与还原(图解)


数据库备份与还原

对于MSSQL数据库来说,备份的方式分为力两种:

? 分离:分离是数据库默认的路径进行保存的,路径:C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER08\MSSQL\DATA 分离成功后,数据DBMS内的数据库列表中将不存在这个数据库。

? ? 分离操作后,生成俩个数据库文件一个是.MDF数据库文件,另一个是.LDF数据库日志文件。在数据库分离的过程中,注意要删除现有对数据库的保持的链接,保存更新即可。

? 进行分离的数据库,如果希望重新添加到DBMS管理系统的数据库列表中,则采用附加数据库的方式,操作如图:

?

择.MDF结尾的文件进行附加。 然后选

?

? 备份:数据库的备份 是将DBMS中的数据库仅仅备份生成一个.bak文件,路径可以自

由选择,备份完毕后,数据库依然在DBMS中的列表内。

?

选择要进行备份的数据库。

?

选择要备份的路径,点击确定,就会在你选择的路径生成一个.BAK的数据库备份文件。

?

作,点击DBMS的数据库进行还原。 数据库还原操

?

在选择备份的数据库上点击选中按钮。

?

覆盖现有的数据库,并且将行数据与日志设置到DBMS专门管理数据库的路径,这样匹配保证了数据库数据与操作记录的一致,是非常必要的选择。

总结:数据库分离与备份的区别:

数据库的分离操作速度比较快,而且备份的数据库文件就存放在数据库专门管理数据的位置,采用附加的形式,对数据库进行还原操作。

备份的操作速度上比较慢,但备份后,DBMS中还会保留备份的数据库的列表,而且再还原的过程中,DBMS中必须保存一个同名的数据库才可以进行还原。

分离适合于数据库的移动或上线的时候使用,而备份操作适用于系统上线后,每天对数据进行保存的版本控制。

更多相关推荐:
关于mysql数据库不是3306端口用命令行远程连接的解决办法

连接mysql3306端口命令mysqlh5864217120ushopp123456连接非3306端口指定其他端口的命令mysqlh5864217120P3308ushopp123456不同的地方我已经用黄色...

mysql数据库配置总结

在vb60中配置mysqlODBD数据库打包总结SERVER1写自动安装mysql驱动注意我的MYSQL是51的驱动必须一致先把该目录下的myodbc5dll和myodbc5Sdll文件复制到目标计算机下CWI...

mysql 命令备份数据库

mysql命令备份数据库一MySQL数据库备份命令MySQL数据库使用命令行备份例如数据库地址127001数据库用户名root数据库密码pass数据库名称myweb备份数据库到D盘跟目录mysqldumph12...

PHP连接调用mysql数据库的方法

PHP连接调用数据库的方法MySQL访问函数都需要有相应的权限才能运行常用的相关函数介绍如下1integermysqlconnect主机用户名口令此函数开始一个对指定主机上的MySQL数据库的连接若该数据库位于...

mysql主从数据库的配置说明文档

一、主从配置的原理:MySQL的Replication是一个异步的复制过程,从一个MySQLinstace(我们称之为Master)复制到另一个MySQLinstance(我们称之Slave)。在Master与…

使用myeclipse连接sqlserver 20xx并且使用Hibernate操作数据库

使用myeclipse连接sqlserver20xx并且使用Hibernate操作数据库1使用myeclipse连接sqlserver20xx得到自己的sqlserver20xx实例的监听端口号1打开SQLSe...

Linux下apache mysql等服务修改默认端口后无法正常启动解决办法

linux下apache等服务修改默认端口后无法正常启动解决办法服务器上装了两个webserver一个是nginx开在80端口没有异常另外一个是apache绑定的8001端口可是启动服务时报错Startingh...

Mysql端口登录 测试

0安装MySQL服务1不同端口登录通过开始菜单gt程序gtMySQLgtMySQLCommandLineClient通过输入密码Enterpassword进行登录该MySQL服务端口已定或者通过运行命令gtCP...

如何修改mysql的端口

通达OA的Mysql端口的修改方法同一台服务器安装多个Mysql数据库时可能会引起端口冲突当端口冲突时可以通过修改通达OA的Mysql的端口或修改安装的其他的Mysql数据库的端口来避开端口冲突下面以Mysql...

看紧你的3306端口,一次通过mysql的入侵

看紧你的3306端口一次通过mysql的入侵阅读217时间20xx81180030用superscan扫了一下某个c类的网段寻找开放80端口的机器结果就只有一台机器开放了80端口试着连了一下是我们学校某个社团的...

Mysql3306端口被占用无法启动解决办法

Mysql3306端口被占用妙招轻松解决早晨发现mysql服务器意外停止服务造成网站无法打开查看mysql日志注该日志在msyql安装目录下data文件夹里文件名是机器名err该文件可用记事本打开发现如下问题1...

Linux上使用netstat查看Mysql端口和连接

Linux上使用netstat查看Mysql端口和连接linux上使用netstat察看mysql端口和连接近日发现写的一个java程序的数据库连接在大压力下工作不打正常因此研究了一下dbcp中间为了查看mys...

mysql数据库端口号(6篇)