连接MySQL报错误代码 ERROR 1045时的解决方案
最近在做网站迁移的时候,遇到了一件很尴尬的事情,远程连接数据连不上了,一直报 错误号码1045 Access denied for user 'root'@xx.xxx.xxx.xx(using password:YES) 远程登录被拒绝
尝试通过阿里云自带的远程连接登录,依然是拒绝访问,这下凉凉了,如果这个问题解决不掉,不光是网站迁移完成不了,之前存的数据也保存不下来了。难道只能趁着夜黑风高天里跑路?怎么可能~~
度娘谷哥了一圈,解决办法也有而且都差不多(很多都是一字不差的复制),基本步骤是
1:停止MySQL服务器(一般在/etc/init.d/mysql)
2:设置MySQL跳过权限验证并启动
3:更新远程登录权限并刷新
4:重启服务器
如果是正常配置的服务器,找到mysql并且停止它,是一件非常容易的事情,但是,作为一台经过了几次交接,基本上没有使用文档的服务器,那就很伤脑筋了。反正我找了很久都没有找到mysql装在了哪里,从哪里启动。
注意:以下操作为非常规操作,且涉及到重启服务器,改配置等危险操作,如果不是自己的服务器或者服务器网站特重要的,不建议尝试,以免被项目经理打出屎...
尝试使用网上给出的命令关闭MySQL服务器,关闭失败,只能强行kill掉进程,然后使用命令 mysqld_safe --skip-grant-tables & 没有成功,报找不到 mysqld_safe
没有办法,只能想办法改配置文件了,在/etc文件夹下,找到my.cnf文件,对其进行修改,在[mysqld]下添加 skip_grant_tables 让MySQL在运行的时候可以跳过权限,直接登录。
所以?找不到MySQL要怎么重启呢?幸亏这个服务器目前只挂了一个访问量很小的官网,利用服务器重启后MySQL也会自启的特性,我在后台直接重启了服务器。
so?我成功了,服务器重启后,MySQL也启动了,直接输入命令 mysql 回车,绕过权限进入数据库成功。
后面的操作就比较简单了,
先使用命令 flush privileges; 刷新数据库系统权限
然后使用命令
GRANT ALL PRIVILEGES ON *.* TO 'manage'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;
新增一个manage用户用于远程访问。
退出MySQL服务器后,将/etc/my.cnf文件中的 skip_grant_tables 注释掉,再次重启服务器
一顿骚操作之后,再次尝试远程连接数据库,连接成功~~
啊~今天又很坚强的活了下来~~