连接MySQL报错误代码 ERROR 1045时的解决方案

2022-10-16,,,,

        最近在做网站迁移的时候,遇到了一件很尴尬的事情,远程连接数据连不上了,一直报 错误号码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 注释掉,再次重启服务器
 
        一顿骚操作之后,再次尝试远程连接数据库,连接成功~~
 
        啊~今天又很坚强的活了下来~~
 
 
 

《连接MySQL报错误代码 ERROR 1045时的解决方案.doc》

下载本文的Word格式文档,以方便收藏与打印。