我遇到的mysql问题(连续更新)-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

我遇到的mysql问题(连续更新)

简介:

  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 </opt/cms_test.sql
  重新进入数据库赋于用户权限:

  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

------------------------------------------------ 

本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/495643

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: