最近在用原生spring测试连接池时出现报错,便想着退一步直接使用经典的jdbc(只使用mysql-connector-java),没想到依旧报错——接着在IDEA中进行测试,最终将bug定位在数据库连接问题。
长话短说,我认为是macBigSur以及mysql8.0的更新,导致了众多root用户权限、参数默认值问题。因为这些问题在最近才暴露出来,网上很少有可行解决方案,走了不少弯路。
耗费两天时间我才后知后觉,Navicat和IDEA中的数据库连接失败是两个独立的错误,本篇解决前者。let’s go。
1045 - Access denied for user ‘root’@‘localhost’ (using password: YES/NO)
直译:错误代码1045 - 拒绝为用户‘root’提供访问(是否填入了密码:YES/NO)
方案一 —— 直接利用Navicat的图形化界面进行操作
方案二 —— 利用命令行暂时跳过密码验证
1.关闭mysql服务
>>> sudo /usr/local/mysql/support-files/mysql.server stop
2.进入到bin文件夹
>>> cd /usr/local/mysql/bin/
3.获取超级管理员权限
>>> sudo su
4.禁止身份验证
>>> ./mysqld_safe --skip-grant-tables &
5.此时mysql服务自动重启,这次无需密码即可成功连接,自然不会报错
方案三 —— 利用命令行修改密码
6.接着上面的操作。进入mysql客户端
>>> sudo /usr/local/mysql/bin/mysql -u root -p
7.修改用户root的密码
>>> flush privileges;
>>> SET PASSWORD FOR root@localhost = '123456';
最后补充几个命令行,以便复制粘贴(mac)
sudo /usr/local/mysql/support-files/mysql.server start // mysql数据库服务开启
sudo /usr/local/mysql/support-files/mysql.server stop // mysql数据库服务关闭
sudo /usr/local/mysql/support-files/mysql.server restart // mysql数据库服务重启
sudo /usr/local/mysql/bin/mysql -u root -p // 开启mysql客户端(>>>就可以写sql语句啦)