Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218461
  • 博文数量: 68
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-19 21:17
文章分类

全部博文(68)

文章存档

2009年(16)

2008年(12)

2007年(27)

2006年(13)

我的朋友

分类: Mysql/postgreSQL

2008-03-22 15:01:36

昨天迁移WEB服务器的目录,今天要搬数据库了
先在新机上安装:
apt-get install mysql-server php5-mysql
在旧机上打包/var/lib/mysql整个目录
tar -cf mysql_data.tar mysql
复制到新机:
scp .
先关闭mysql服务:
/etc/init.d/mysql stop
将原安装的初始mysql目录改名:
mv mysql mysql_install
解开从旧机拷过来的mysql数据目录:
tar -xvf mysql_data.tar
重启mysql服务:
 /etc/init.d/mysql start

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user (using password: YES)'
阿,不好,出错了,而且连stop都执行不了了,还得用kill强行终止进程。
分析下
系统mysqladmin连接mysql数据库不对,
查看/etc/mysql/debian.cnf,它的文件属性是:
-rw------- 1 root root  312 Mar 22 11:38 debian.cnf
查看内容,可以看到有这个mysql连接用户:
[client]
host     = localhost
user     = debian-sys-maint
password = G1I2JcALeXXvyC50
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user     = debian-sys-maint
password = G1I2JcALeXXvyC50
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr
其中的password这个密码就是用来连接的密码吧,在这里,我还是用土办法吧,把原始库的密码密文复制到新库中来:
改回原来的初始库,启动,用mysql连接,打开mysql库,在user表里找到用户记录,复制下它的Password字段,退出,关闭数据库。
再改回有数据的mysql目录,启动(当然还提示出错,但服务有启动),用mysql连接,打开mysql库,
mysql>update user set Password='*3B0E4E8BB8D0F091951CD02FC8B4070EB976E1A8' where User='debian-sys-maint';
mysql> FLUSH PRIVILEGES;
 
退出,用/etc/init.d/mysql stop数据库,哎可以正常关闭了。huhu!再启动当然也没问题了。
但还有个问题还没解决,在反复折腾的过程中,也不知哪错了,现在启动mysql时会有这个错误:
Checking for corrupt, not cleanly closed and upgrade needing tables..
网上搜索无果。自己冒险用:
mysqlcheck --auto-repair  --all-databases -p
也没有结果。
 
我在旧机上尝试重启mysql里,竟然也有这个问题,隐藏好久呀,上次没发现,竞也没影响数据库运行,呵。估计是旧机重装时的留下的问题,这个debian系统连接数据库的密码估计是随机生成的,每次不一样,我这样把数据拷来拷去,当然出错了:
/etc/init.d/mysql restart
Stopping MySQL database server: mysqld failed!
Starting MySQL database server: mysqld already running.
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user (using password: YES)'
这下,我不通过土办法了,直接用mysql登录,为debian-sys-maint用户改密:
SET PASSWORD FOR = PASSWORD('5ZnA0mDCHTp1IN4H');
解决了呵。
阅读(2439) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~