今天,朋友的服务器登录phpmyadmin时提示1045错误,进入ssh后登录数据库仍然是1045错误。 在网上找了各种各样的方法,但都没有成功。
提示如下。
错误1045 (28000 ) : accessdeniedforuser ' root ' @ ' localhost ' (using password :是)。
首先考虑的是进入安全模式,重置密码。 没有成功,但附上方法:
1、禁用mysql服务:
/etc/rc.d/init.d/mysqld stop
或者是的
服务mysqld stop
2、输入命令:
mysqld _ safe---- user=MySQL---- skip-grant-tables---- skip-networking
在某些环境下可能行不通。 系统将提示您访问和执行mysql安装目录
找到安装目录。 我的示例目录是一键安装软件包,常见于阿里服务器/alidata/server/mysql。
命令的格式如下。
/alidata/server/mysql/温软的大树/mysqld _ safe---- user=MySQL---- skip-grant-tables-- skip-networking
3、登录数据库:
请特别注意这个地方。 请务必新建ssh窗口并登录此服务器
mysql -u root mysql
不使用密码直接访问mysql
4、进入mysql
use mysql;
结果如下。
数据库更改
5、更改根密码:
更新用户集密码=密码(新密码) WHERE User='root );
结果如下。
查询确定,3Rowsaffected(0.00sec ) rows matched :3 changed :3 warnings :
刷新数据库
flush权限;
结果如下。
查询确定,0Rowsaffected(0.00sec ) )。
在用mysql操作的所有命令后面加上“; 请不要忘记有”。
最后退出
mysql quit
重新启动mysql
/etc/rc.d/init.d/mysqld restart
或者是的
service mysqld restart
用root登录mysql
MySQL-urootp
Enter password:新密码
成功登录!
接下来要说的方法是以上方法不成功时的解决方法。 这才是这篇文章的重点。
也不是新方法,很多人实际上能做到。
1 .首先确保服务器处于安全状态,即任何人都不能任意连接到MySQL数据库。 因为在更改过程中,任何人都可以登录mysql并更改用户密码。
我的方法是停止apache或nginx服务。
编辑my.cnf文件
vi /etc/my.cnf
如下图所示。
在[mysqld]的启动选项中添加skip-grant-tables实际上是跳过许可证表。
原始代码如下。
[客户端]
端口=3306
socket=/tmp/mysql.sock
[mysqld]
端口=3306
socket=/tmp/mysql.sock
跳过外部锁定
log-error=/alidata/log/MySQL/error.log
key_buffer_size=16M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
修改后如下。
[客户端]
端口=3306
socket=/tmp/mysql.sock
[mysqld]
端口=3306
socket=/tmp/mysql.sock
脚本授权表
#skip-external-locking
log-error=/alidata/log/MySQL/error.log
key_buffer_size=16M
max_allowed_packet=1M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8K
read_buffer_size=256K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
原始文件中有skip-external-locking。 前面加了#进行了评论。
是的,退出并保存
:wq!
重新启动mysqld
service mysqld restart
结果如下。
stopping MySQL : [确定]
开始MySQL : [确定]
登录并更改MySQL的根密码
mysql
结果如下。
welcometothemysqlmonitor.command send with; or g。
yourmysqlconnectionidis3toserver版本:3.23.56
类型' help;' or 'h ' forhelp.type 'c ' toclearthebuffer。
use mysql;
结果如下。
数据库更改
更改根密码:
更新用户集密码=密码(新密码) WHERE User='root );
结果如下。
查询确定,3Rowsaffected(0.00sec ) rows matched :3 changed :3 warnings :
刷新数据库
flush权限;
结果如下。
查询确定,0Rowsaffected(0.00sec ) )。
撤消MySQL登录设置
vi /etc/my.cnf
删除刚才添加到[mysqld]段落的skip-grant-tables,撤消注释部分。
保存并退出vi
重新启动mysqld
service mysqld restart
stopping MySQL : [确定]
开始MySQL : [确定]
开始上次停止的服务
服务httpd restart
服务nginx restart
那么,进入phpmyadmin就再也没有1045条提示了!