mysql数据库的备份和转移[自我总结,是之前一篇文章的补充]
翱翔天空♂鹏 发表于 2008-11-14 12:21:46
1 使用mysqldump备份和拷贝数据库
当你使用mysqldump程序产生数据库备份文件时,缺省地,文件内容包含创建正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句。换句话说,mysqldump产生的输出可在以后用作mysql的输入来重建数据库。
你可以将整个数据库倾倒进一个单独的文本文件中,如下:
%mysqldump -u用户名 -p密码 samp_db(数据库) > /usr/archives/mysql/samp_db.1999-10-02 (输出的mysql脚本文件)
如果要快速的导出数据库中的数据以及导出存储过程,使用如下语句(增加了两个参数--opt -R):
%mysqldump -u用户名 -p密码 --opt -R samp_db(数据库) > /usr/archives/mysql/samp_db.1999-10-02 (输出的mysql脚本文件)
2. 在另一个机器上执行该脚本
先把输出的脚本文件拷贝过来,然后:
%mysqladmin -u用户名 -p密码 create samp_db(数据库) //先创建数据库samp_db
%mysql -u用户名 -p密码 samp_db(数据库) < samp_db.1999-10-02 (输入的mysql脚本文件) //创建表以及插入数据
3. 如果在操作视图和存储过程中遇到“ERROR 1449 (HY000): There is no 'root'@'%' registered”的情况,大意是说找不到在Host 值为"%",User值为"root"的数据,即该主机以及该用户没注册到mysql数据库中的user表中,因为创建这些视图和存储过程的所有者为“root@%”,进行如下操作即可明白:mysql> use mysql; //进入mysql数据库
mysql> desc user; //查看user表的结构
mysql> select * from user; //查看user表的数据
mysql> DELETE FROM user WHERE Host='%'; //如果有该主机"%",删除该行数据
mysql> INSERT INTO mysql.user (Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv) values ('%','root', PASSWORD('root'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
//插入'root'@'%' 的注册信息并授予相应的权限
mysql> FLUSH PRIVILEGES; //验证相应的权限是否正确
通过上述几步就可以解除访问视图或是存储过程的权限了。