记一次Mysql Access denied for user 'root'@'localhost' (using password: YES)

558 阅读1分钟

明天和意外不知道哪个先来

        最近在阿里云上部署环境,装了Mysql5.7。就在远程连接通过,正准备部署项目的时候,出现了如题的错误提示。

jdbc:log4jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

Mysql Access denied for user 'root'@'localhost' (using password: YES)

一顿操作猛如虎一看error不会撸

  1. 怀疑密码错误,重新验证了密码问题。并且远程可以登录云端数据库,排除密码问题;
  2. 权限问题?grant所有的权限了,一开始还忘记flush,最后fluash也没有救我;
  3. 密码存在特殊字符比如“@”,换成了字母+数字,还是不行……

是哪个天使大姐在我天灵盖一杵

        就在崩溃的边缘,想起曾在编码问题上受过伤,用户输入的emoji保存后成了乱码,原因是mysql的utf8不是真正的UTF-8,因为历史原因有人偷懒用3位表示了utf8,但必须要用utf8mb4才能保存emoji👿。所以最后怀疑是编码问题,于是不急不慢,倒一杯清茶,开始最后的一次挣扎:

$ vim /etc/my.cnf

添加如下

[mysqld]

character_set_server=utf8

init_connect='SET NAMES utf8'

        怀着忐忑的心情,最终成功运行了。

黎明前最黑暗

        就差想着阿里云能一键构建开发环境了,真的一个下午都处于一种暴躁的状态,完全没法写if-else呢,搞完得加快进度鸭。