Mysql数据库笔记(问答篇)


1、问题:

使用mysql数据库的时候,当生成大量的表,并插入大量的记录的时候,/usr/local/mysql/data目录下生

成了一些日志文件,如:localhost-bin.001,localhost-bin.002 ……,这些文件非常大,占用了好几个G

的空间,很快我的空间都没有了,请问如何控制,不写这些日志呢?我看了日志文件内容,里面都是一些

sql语句,如:insert....,update......

答:可以删除。不是错误日志,是用来增量备份的,用于多台mysql之间的同步。

要去掉的话,编辑my.cnf文件,注释掉log-bin=mysql-bin,重启mysql。

或FLUSH Logs

2、问题:如何将MYSQL的data目录放在别的地方?

停止mysql,拷贝文件到你想要的位置;

打开my.cnf文件,编辑里面的datadir;

启动mysql

3、备份与恢复

常规备份命令是mysqldump,这里以tm数据库为例,做简单介绍

备份:

#mysqldump -u root -p tm > tm_20060101.sql

按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_20060101.sql了,因为要总进行备份工

作,如果数据量大会占用很大空间,这是可以利用gzip压缩数据,命令如下:

#mysqldump -u root -p tm | gzip > tm_20060101.sql.gz

还可以备份到远程机器,用-h制定,如

#mysqldump -u root -p tm > tm_20060101.sql -h xxx.xxx.xxx.xxx

可以直接备份到IP地址为xxx.xxx.xxx.xxx的远程计算机。

系统崩溃,重建系统,或恢复数据库时,可以这样恢复数据:

#mysql -u root -p tm use mysql

>update user set password=password("new_pass") where user="root";

>flush privileges;

>exit

用Ctrl+Alt+Del,找到mysqld-nt的进程杀掉它,在重新启动mysql-nt服务,就可以用新密码登录了

在linux下:

如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。

启动 MySQL :bin/safe_mysqld --skip-grant-tables &

就可以不需要密码就进入 MySQL 了。

然后就是

>use mysql

>update user set password=password("new_pass") where user="root";

>flush privileges;

重新杀 MySQL ,用正常方法启动 MySQL 。

6、为什么出现如下的提示:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

注:也可能是其它路径下的mysql.sock

A:说明mysql服务没有启动,mysql.sock是mysql服务启动后启动生成的文件,

一般先杀掉mysql服务:killall mysql

然后,再根据自己的安装情况启动mysql即可。比如,安装的时候,用的是

./configure --prefix=/usr/local/mysql的

用下面的命令启动:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

之后再去执行/usr/local/mysql/bin/mysql -u root -p 登录进入mysql数据库

7、为什么出现下面的错误

#1251 - Client does not support authentication protocol requested by server; consider

upgrading MySQL client

你使用的数据库是4.1以上,用命令行连接MySQL数据库后,执行下面的命令:

Update mysql.user SET password=OLD_PASSWORD("your_password") Where Host="your_host" AND

User="your_username" ;

即可解决。

相关内容