OS版本:CentOS 5.5,MySQL版本:5.0

  一、今天安装openQRM,但是失败了,这导致了一个问题:无法使用root账户登陆mysql了!错误代码:  
     
     
     
     
  1. ERROR 1044 (42000):ccess denied for user 'root'@'localhost'
  按照网上的朋友的一般做法,重设MySQL的root密码,未能完全解决问题:  
     
     
     
     
  1. service mysqld stop --停掉mysql
  2. mysqld_safe --skip-grant-tables & --以mysqld_safe的启动方式忽略掉授权表
  3. mysql --直接在shell中输入此命令即可登陆
  登陆mysql后进行以下操作,重设MySQL的root密码:  
      
      
      
      
  1. use mysql;
  2. update user set password=PASSWORD('12345') where user='root';
  3. flush privileges;
  然后退出mysql,进行重启。要注意的是,以mysqld_safe方式启动的Mysql好像只能使用kill命令停掉。
  重启以后,使用刚才重设的root密码登陆:mysql -uroot -p12345
  可以登陆!

  我说未能完全解决问题,是因为登陆以后的数据库看起来不对!只有两个数据库:information_schema和openqrm,并且,在进行其它操作时老是出现access denied的错误!  
  后来从网上看到有人在登陆时指定本机的IP,我试了一下,这样登陆以后显示结果才正常!  
      
      
      
      
  1. mysql -u root -h 192.168.9.53 -p
  虽然可以使用上面的方法登陆,数据库显示也正常,但是总归觉得怪怪的,于是继续尝试。试了多次,最后只用了一个命令就解决了这个问题: 
      
      
      
      
  1. drop user root@'localhost';
  退出mysql,重启Mysql,然后登陆mysql:mysql -uroot -p12345
  完全OK!  
-------------------------------------
  二、今天测试部的一位同事跑过来说需要用到研发部的一个数据库,要求我复制一个给他。我使用mysqldump的方法进行完全备份了一个,再新建数据库进行导入数据,大致过程如下:
  首先进入MySQL新建一个测试数据库:
    
    
    
    
  1. create database cms_test;
  然后在shell中使用dump进行备份和导入:
    
    
    
    
  1. mysqldump cms >/opt/cms_test.sql
  2. mysqldump cms_test
  重新进入数据库赋于用户权限:
    
    
    
    
  1. grant all on cms.* to test@"%" identified by 'test';
  但是在本机测试添加用户是否成功时,出现了错误,错误提示如下:
    
    
    
    
  1. mysql -u test -p
  2. Enter password:
  3. ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)
  我以为是在设置权限时哪里出了问题,于是删除原用户,再重新设置权限:
    
    
    
    
  1. use mysql 
  2. delete from user where user='test' and host="%"
  3. grant all on cms.* to test@"%" identified by 'test'; 
  但是还是无法连接!搜索网上资料,找到了原因:原来,新添加的记录被user表中host为localhost,用户名为空的记录匹配了!找到了原因,解决起来就容易了,删除该条记录即可:
    
    
    
    
  1. delete from user where host='localhost' and user=' ';
  这个错误其实是可以避免的,首次启动Mysql时,会有一个提示,让你运行/usr/bin/mysqladmin -u root password 'new-password'来设置mysql的root密码,或者运行/usr/bin/mysql_secure_installation,选择后者,就可以删除那条用户名为空的记录!
-----------------------------------------
  三、今天遇到了ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)的错误。
  无法重启:
    
    
    
    
  1. Stopping MySQL: [FAILED]
  2. Timeout error occurred trying to start MySQL Daemon.
  3. Starting MySQL: [FAILED]
  /usr/bin/mysql_install_db:失败
  参考:http://hi.baidu.com/w_bobo/blog/item/5f3f7ef4c4de9cd1f2d38534.html/cmtid/87834fed2cea3ddab31cb1bb
  最后的解决办法:
  重启机器,重装mysql,然后service mysqld restart
  参考:http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.aspx
------------------------------------------------