我在用ABP项目 连接阿里云linux 的mysql8时 出现如下错误提示:
Authentication to host '连接名(IP)' for user 'root' using method 'caching_sha2_password' failed with message: Unknown database '数据库名'
然后按照网上说的方法做了如下尝试:
在appsettings.json的mysql连接字符串后面加上 SslMode=None ,失败了,没用。
Linux 下可以修改在/etc/my.cnf文件 ,windows下默认安装目录应该是 在programeData下(C:\ProgramData\MySQL\MySQL Server 8.0)找到my.ini
[mysqld]
default_authentication_plugin=mysql_native_password #配置文件中加入这一行
记得重启mysql服务
linux重启mysql的方法:
1、直接使用“service mysqld restart”或“service mysql restart”命令重启;
2、使用“/etc/init.d/mysqld restart”命令重启。
这个也失败了,没用。
修改root的密码验证方式
从mysql 8.0开始caching_sha2_password是默认的身份验证插件,而不是 mysql_native_password。
修改身份验证方式,命令如下:
alter user 'root' identified with mysql_native_password by '密码'; #连接本机
alter user 'root'@'10.2.110.10' identified with mysql_native_password by 'test123'; #我猜应该是连接远程mysq服务器
mysql> alter user 'root' identified with mysql_native_password by '密码';
Query OK, 0 rows affected (0.01 sec)
输入exit 退出mysql
重启服务:service mysqld restart
再次重试连接,得到如下错误提示:
Authentication to host 'IP' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'IP' (using password: YES)
我再次重新尝试到mysql中 修改'root'@'%':
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
重启服务后再次连接,还是报同样的错误。
但是我用navicat测试连接是可以连上的,所以那就是我连接串的问题了。最后检查连接串发现,是我的连接串密码没改成新密码,而且连接串的数据库名称是大写,这个还涉及要修改数据库区让他不分大小写问题。
4.再次修改my.cnf配置文件设置不区分大小写
mysql大小写敏感配置与两个参数相关 —— lower_case_file_system 和 lower_case_table_names
lower_case_file_system:表示当前系统文件是否大小写敏感(ON为不敏感,OFF为敏感),只读参数,无法修改。
lower_case_table_names:表示表名是否大小写敏感,可以修改。
lower_case_file_system参数无法修改,因此只能利用lower_case_table_names参数来让mysql不区分大小写。
lower_case_table_names=1 说明是否数据目录所在的文件系统对文件名的大小写敏感
0:区分大小写
1:不区分大小写
![](https://img-blog.csdnimg.cn/img_convert/e00d07e606b9423cb60ec068feda5666.png)
结果服务都启动不了了,然后用 vi /var/log/mysqld.log 查看日志发现如下
![](https://img-blog.csdnimg.cn/img_convert/34c0c78d064748139537388adaf88739.png)
手抽改错了 应该是lower_case_table_names=1,修改my.cnf之后再次上传,重启服务,又报错,查看日志如下,查资料得知
LOWER_CASE_TABLE_NAMES只能在初始化服务器时配置。禁止在服务器初始化后更改LOWER_CASE_TABLE_NAMES设置。
也就是说在8.0版本,你的mysql已经初始化过就不支持修改lower_case_table_names参数了!!等于我要重装?
![](https://img-blog.csdnimg.cn/img_convert/aa3c7db041ae41e9ab270b41fdfe6eac.png)