一、     数据库的备份 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版本过低,不具有本功能