最近几天尝试着用okHttp向服务端发送请求,一开始时一切都是好好的然而突然间服务端就报错了!
服务端报错.png
这时候我的大脑真是一片空白,毕竟前几天测试都是没有问题的,为什么会突然间出现这种情况。首先我想的到的是难道连接数据库的文件出现了问题吗,但代码不可能无缘无故的改变吧况且之前后台都是没问题并结合报错的日志来看我排除了后台代码出错的原因。在确定了android访问代码也没有问题后我只能重启计算机并用Navict for Mysql打开数据库,然而我就得到了这个
1045错误.png
用户名或密码错误登录失败。
莫名其妙???天天使用mysql怎么可能出现这种错误,瞬间绝望。难道只能重装数据库了吗,里面有重要信息而且重装麻烦所以卸载是不可能的!在保证用户名和密码都正确的前提下我想猜想了导致错误的原因:
反复向后台请求数据导致mysql出错
存在其他软件占用了3306端口
我结束了AndroidStudio与MyEclipse的进程,并把PhpStorm都给卸载了,再次打开mysql还是报1045错误。只能尝试修改密码了。
首先先找到mysql.exe安装路径
找出安装路径.png
打开cmd并输入cd复制路径
1.png
然后输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证。注意输入此命令之后命令行就无法操作了,此时可以再打开一个新的命令行。注意:在输入此命令之前先在任务管理器中结束mysqld.exe进程,确保mysql服务器端已结束运行。如果没有结束是不能生效的。
打开新的cmd再次进入到路径中输入mysql
2.png
在我以为可以跳开验证修改密码时,我发现我还是太年轻
3.png
再次报出1045!但是和之前报错不同之前一直都是denied for user 'root'这次变成了denied for user 'ODBC'
退出cmd重新进入输入mysql
4.png
这次报错又不一样了报的是2003数据库未启动,当我重新启动数据库后用Navict for Mysql打开居然连接成功了。我一脸懵逼困扰了这么久的问题莫名其妙就解决了。我的问题虽然解决了但我还是想向各位大佬求助一下这到底是什么原因造成的,为什么又会连接成功
最后说一下MySQL常见的报错
Can't connect to MySQL server on 'localhost' (10061)
翻译:不能连接到 localhost 上的mysql
分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。
需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。
解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功,多数是因为你的my.ini配置的有问题。重新配置其即可。
如果觉得mysql负载异常,可以到mysql/bin 的目录下执行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。
Unknown MySQL Server Host 'localhosadst' (11001)
翻译:未知的MySQL服务器 localhosadst
分析:服务器 localhosasdst 不存在。或者根本无法连接
解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbhost重新设置为正确的mysql 服务器地址。
Access denied for user: 'roota@localhost' (Using password: YES)
翻译:用户 roota 访问 localhost 被拒绝(没有允许通过)
分析:造成这个错误一般数据库用户名和密码相对mysql服务器不正确
解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。
Access denied for user: 'red@localhost' to database 'newbbs'
翻译:用户 red 在localhost 服务器上没有权限操作数据库newbbs
分析:这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了,而这个错误是在对数据库进行操作时引起的。比如在select update等等。这个是因为该用户没有操作数据库相应的权力。比如select 这个操作在mysql.user.Select_priv里记录 Y 可以操作N 不可以操作。
解决:如果是自己的独立主机那么更新mysql.user 的相应用户记录,比如这里要更新的用户为red 。或者直接修改 ./config.inc.php 为其配置一个具有对数据库操作权限的用户
或者通过如下的命令来更新授权grant all privileges on dbname.* to 'user'@'localhost' identified by 'password’
提示:更新了mysql库中的记录一定要重启mysql服务器才能使更新生效
FLUSH PRIVILEGES;