以前在windows 下安装mysql 没怎么出现过问题,而在linux下安装的时候出现了一些问题,昨天在windows 安装的时候也出现了1045 错误,就个人经历来看这个问题就是 root用户密码的问题,所以将解决的方式总结如下:
一、mysql登录报 1045 错误
mysqladmin: connect to server at ‘localhost‘ failed
error: ‘Access denied for user ‘root‘@‘localhost‘ (using password: YES)‘
我们看到上面的这个错误就是说 user 为root host为localhost的密码有问题,所以我们就要看看 mysql数据库中user表中user为root,host为localhost的这个用户的密码。
解决办法:破解mysql密码
1、 service mysqld stop
// 停止mysql服务
2、mysqld_safe --skip-grant-tables
// 在mysql的配置文件如果是linux(centos)则在etc/my.cnf配置文件的mysqld_safe 下天添加skip-grant-tables,如果在windows下则在安装目录下的my.ini 配置文件的mysqld 下添加 skip-grant-tables, skip-grant-tables是跳过授权表,这样配置之后保存
关闭,重新启动mysql服务
3、 mysql -uroot -p 回车
// 这样就进来了,这里有两个问题,也是我遇到的两种情况,一种是user表中有user为root的用户,一种是没有,如果有则进行如下处理:
(1)、use mysql;
// 使用mysql数据库
(2)、 delete from user where host="localhost" and user=" ";
// 将host为localhost下的user为空的用户都删了,其实也可以把这里localhost改成 % 免得以后连接的时候连接不了,不过是后话在这里该不该都可以。
(3)、 update user set password=PASSWORD("newpass") where user="root";
// 如果你查询一下你会发现 mysql中的密码是加密保存的,所以修改密码不能向平时的sql一样 而要使用password("新密码")关键字来修改密码,新密码为password中的字符。
(4)、 flush tables;
//数据刷到磁盘
(5)、 flush privileges;
//更新权限
(6)、quit
//退出
(7)、将配置文件中 skip-grant-tables 注释/删掉 保存
(8)、service mysqld restart
// 再次启动服务 mysql -uroot -p新密码回车 ,这样应该可以了
二、 接着上面3、mysql -uroot -p 回车 进入之后use表中没数据,即创建root用户做如下处理:
第一种情况,就是user中有root用户但是连接不上是在windows下遇到的,而user中什么都没有是在linux(centos) 下遇到的,具体处理如下:
在linux下安装了mysql之后出现错误,刚开始以为就是第一种这种情况,网上大多也都是这类文章于是就按照这篇文章进行了修改:linux下mysql 初次登陆修改密码 修改之后应该没错,但再次启动服务root登录还是不行,下面的就是出现的问题和解决过程:
1、查询看有没有user 为root的用户,或这说user中有没有用户。
mysqld_safe--skip-grant-tables&mysql-uroot
|
结果是没有root用户,user表里面是空的,还是第一次遇到这种问题的。
2、插入用户信息到 user表
由于 mysqld_safe --skip-grant-tables里面是不能用grant的,于是想到了手动insert插入root用户:
**为了大家方便这里提供一些说明:第一个值是host,第二个为user这两项是必填项,password("my_password")这里进行密码的设置,MY_PASSWORD 就是新设的密码 ,而‘Y‘有28个,之后有1个enum和3个blob 可以为空,也就是这里的4个空字符,int类型有4个,默认值为0
INSERTINTO user VALUES(‘%‘,‘root‘,password(‘MY_PASSWORD‘),‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘‘,‘‘,‘‘,‘‘,0,0,0,0)
|
这里要主要的是第3个字段密码处要用password(‘密码‘),因为mysql中密码是要经过编码的,不是直接字符串保存的。
3、接着在杀掉所有mysql进程,之后正常重启mysql,即可用root用户登录
到目前个人就遇到的问题总的就这两种,希望对你有用!!