一、 数据库的备份
1. 导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 例:mysqldump -u dbadmin -p myblog > myblog.sql 2. 导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 例:mysqldump -u dbadmin -p myblog wp_users> blog_users.sql 3. 导出一个数据库结构 mysqldump -u dbadmin -p -d --add-drop-table myblog > blog_struc.sql 说明:-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 4. 导出数据库一个表结构 mysqldump -u dbadmin -p -d --add-drop-table myblog wp_users> blog_users_struc.sql 说明:-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 带语言参数导出:mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql 5. 数据库的导入 用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。 mysql -u root -p ***** myblog < myblog.sql 这种方法,我以前经常现在很少用了,因为很容易产生乱码,因为:导出数据库时,你如果忘了设置导出字符集的话,在导入的时候,就有可能会出问题.假如,你导出时设置导出时设置了utf8的编码,但是你又把你的数据库现在的字符集改成了gb2312的.这样又会乱码。 用 source 语句 use myblog; set names utf8; #这里的字符集根你的将要导入的数据库的字符集一至。 source myblog.sql; 6. 查看导出的sql文件的编码 file base_user.sql 7. 转成要用的编码 iconv -f utf-8 -t gbk base_user.sql >base_user_gbk.sql 8. 连接数据库并查看当前库的编码 status; 9. 设置成需要的编码 set names 'gbk'; 10. 通过拷贝frm myd myi opt实现mysql的备份和还原 frm myd myi opt的解释 .frm保存的是描述了表的结构 .MYD保存的是表的数据记录 .MYI保存的是表的索引 .opt保存的是数据库的字符集 ls |grep opt | xargs catdefault-character-set=utf8default-collation=utf8_general_ci 备份数据库 创建一个数据库,create database test;这个时候去data目录下面看看,会产生一个test文件夹,里面只有一个db.opt文件,然后你在创建一些表,添加一些数据后,你在去data/test下面看看,里面多了一些.frm,.myd的文件。 tar czvf /home/databak/test.tar.gz /usr/local/mysq/data/test 这样就备份好了。 还原数据库 进入test数据库 use test; show tables; 在这儿你会看到,你新增加的表。 删除data/test目录下面的frm,myd,myi这三种类型的文件 use test; show tables; 这个时候,一张表都没有。 还原表 tar zxvf /home/databak/test.tar.gz -C /usr/local/mysq/data 在查看test的表 use test; show tables; 这个时候,新增加的表又出来了。 如果是直接把data下面的test目录删除掉的话,就重新create database test;会产生一个新的test目录,然后在把备份的数据,还原过来就行了。个人觉得这种备份比较好,导出,导入比较麻烦,不用记得备份命令,只要会copy就行了。在不改变数据库配置的前提下,这种备份,还原基本上不会出现乱码的。 二、 添加用户并授权 添加任何机器都能登录的用户 GRANT ALL PRIVILEGES ON dbName.* TO test@”%” identified by “1111”; %:代表所有的机器 也可以单独指定某个允许的客户端机器 GRANT ALL PRIVILEGES ON *.* TO ‘bae’@'%’ IDENTIFIED BY ’1111′ with grant option; 有授权权限 添加172.16.184.233机器登录的用户 GRANT ALL ON dbName.* TO test@172.16.184.233 IDENTIFIEDBY “1111”; 添加 一个用户 授 增 删 改 查 的权限。 GRANT SELECT,INSERT,DELETE,UPDATE ON dbName.* TO test@% IDENTIFIEDBY “1111”; 三、 mysql定时备份 shell脚本 vi /home/zhangy/database_bak.sh #!/bin/sh # File: /home/zhangy/database_bak.sh # Database info bakupmysql TANK 2009/11/04 DB_USER="root" #用户名 DB_PASS="********" #密码 DB_NAME="myblog" #要备份的数据名 <SPAN id=more-161></SPAN># Others vars DATE=`date +%Y_%m_%d` #要备份的日期 YESTERDAY=`date -d yesterday +%Y_%m_%d` #删除昨天的备份 BIN_DIR="/usr/local/mysql/bin" BCK_DIR="/home/zhangy/database_bak" #备份路径 cd $BCK_DIR #删除以前该数据库的备份 if [ -f $YESTERDAY$DB_NAME".sql" ] then rm -f $YESTERDAY$DB_NAME".sql" fi # 备份 ${BIN_DIR}/mysqldump --opt -u${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BCK_DIR}/${DATE}${DB_NAME}.sql 定期执行 把shell放到crontab里面。 #查看crond是否已启动 [root@BlackGhost cron]# ps -e|grep crond 21519 ? 00:00:00 crond #打开crontab [root@BlackGhost cron]# crontab –e #在里面加上一行 00 18 * * * /home/zhangy/database_bak.sh #查看一下是否已加上 [root@BlackGhost cron]# crontab –l 四、 Mysql卸载与安装 卸载 查找已安装的myslq 版本: #rpm -qa | grep mysql (注意大小写,如果mysql 不行就换MySQL) 在屏幕上将显示已安装的mysql包名如:mysql-5.0.22-2.1.0.1 ; 将搜索出的包名卸载: #rpm -e --nodeps mysql-5.0.22-2.1.0.1 (nodeps表示强制删除) 安装 安装mysql yum install mysql 安装mysql服务器 yum install mysql-server 五、 mysql出错列表 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败 1023:关闭时发生错误 1024:读文件错误 1025:更改名字时发生错误 1026:写文件错误 1032:记录不存在 1036:数据表是只读的,不能对它进行修改 1037:系统内存不足,请重启数据库或重启服务器 1038:用于排序的内存不足,请增大排序缓冲区 1040:已到达数据库的最大连接数,请加大数据库可用连接数 1041:系统内存不足 1042:无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:数据表已存在 1051:数据表不存在 1054:字段不存在 (SQLSTATE: 42S22 ) 1065:无效的SQL语句,SQL语句为空 1081:不能建立Socket连接 1114:数据表已满,不能容纳任何记录 1116:打开的数据表太多 1129:数据库出现异常,请重启数据库 1130:连接数据库失败,没有连接数据库的权限 1133:数据库用户不存在 1141:当前用户无权访问数据库 1142:当前用户无权访问数据表 1143:当前用户无权访问数据表中的字段 1146:数据表不存在 1147:未定义用户对数据表的访问权限 1149:SQL语句语法错误 1158:网络错误,出现读错误,请检查网络连接状况 1159:网络错误,读超时,请检查网络连接状况 1160:网络错误,出现写错误,请检查网络连接状况 1161:网络错误,写超时,请检查网络连接状况 1062:字段值重复,入库失败 1064:语法错误,常见的比如注释-- 后没加空格 1169:字段值重复,更新记录失败 1177:打开数据表失败 1180:提交事务失败 1181:回滚事务失败 1193:变量没声明,常在写存储过程时发生 1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:外键约束检查失败,更新子表记录失败 1217:外键约束检查失败,删除或修改主表记录失败 1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:权限不足,您无权进行此操作
1235:MySQL版本过低,不具有本功能