无法连接到mysql:无法加载身份验证插件'caching\u sha2\u password'

t2a7ltrp  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(351)

我被卡住了,我用自制软件安装了新版本的mysql(8.0.12)。然后我从mysql中转储了我的数据库(我使用mamp堆栈,这样做是为了摆脱它……)。然而,当导入转储文件时,数据库被创建,一切似乎都井然有序。然后我尝试将我的ide(phpstorm)连接到它,我得到一个错误,说“无法加载身份验证插件'缓存\u sha2 \u密码'”(我想这是这个新版本引入的…)。
我创建了一个my.cnf文件并将:
[mysqld]默认\u身份验证\u插件=mysql\u本机\u密码
还是有同样的问题。。。
因此,我还尝试创建一个用户,在这个新算法下使用密码(缓存\u sha2 \u密码)。没有很好的工作,我以sudo的身份登录到mysql,它给了我以下信息:
macbookair$sudo mysql password:欢迎使用mysql监视器。命令以结束;或\g。您的mysql连接id是16服务器版本:8.0.12 homebrew
版权所有(c)20002018,甲骨文和/或其附属公司。版权所有。
oracle是oracle corporation和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。
键入“help;”或'\h'寻求帮助。键入'\c'清除当前输入语句。
mysql>alter user'root'@'localhost'由'root'标识mysql_native_密码;错误1726(hy000):存储引擎“myisam”不支持系统表[数据库]
最后但并非最不重要的一点是,我使用以下内容更改了my.cnf文件中的配置:default\u authentication\u plugin=mysql\u native\u password
有什么主意吗?
干杯

yizd12fk

yizd12fk1#

myisam基于旧的(不再可用的)isam存储引擎
... 看到了吗https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html
您可以在MySQL5.*安装上运行几个检查,看看是否可以升级(这些只是示例):

mysqlcheck -u root -p --all-databases --check-upgrade

mysql_upgrade --user=root -p --host=localhost —force

如果您有mysql shell:

mysqlsh -- util checkForServerUpgrade root@localhost:3306 --target-version=8.0.16  --config-path=/etc/my.cnf

这些命令可以修复、升级或修复数据库的问题。
在5.*安装中,我建议您将myisam表转换为innodb,并使用新的默认字符集utf8mb4,它对更多字符集有更广泛的支持。

ALTER TABLE table_name ENGINE=InnoDB;

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;

使用mysqldump保存您的模式。单独安装mysql 8(不要将5.*安装升级到8。)将mysqldump文件导入到mysql 8安装中创建的新数据库下。
创建用户帐户:用户帐户必须使用旧的身份验证插件创建-这是php连接的唯一方式。另外,必须使用PHP7.2.4或更高版本。

CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';

授予用户对相应架构的访问权限。比如:

GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost';

注意:php的mysql本机驱动程序(mysqlnd)尚未更新为使用新的默认身份验证插件(缓存\u sha2 \u密码)通过将此添加到/etc/my.cnf文件,告诉mysql在创建用户帐户时使用旧的身份验证插件:

default_authentication_plugin=mysql_native_password

但是如果在my.cnf文件中没有包含上述指令,您仍然可以发出带有“identified with mysql\u native\u password”子句的create user语句来使用旧的auth插件!

yhived7q

yhived7q2#

所以我决定删除MySQL8,安装5.7,这对我来说很好,显然没有兼容性问题。对于mysql server 5.和8.0之间的兼容性问题,这是一个快速而肮脏的替代方案。
问题是我将数据库从mysql v 5.
(mamp stack)迁移到mysql server 8.0(单独安装),因此转储是使用myisam引擎创建一些系统表(在以前的版本中,我认为innodb不能用于系统表…?)。但是,这给我在修改任何系统表(用户密码等)时带来了很多问题,我不确定这是否是因为他们正在尝试摆脱myisam引擎,所以新的插件没有被修改,比如缓存\u sha2 \u密码(顺便说一句,更改my.cnf文件并添加“default \u authentication \u plugin=mysql \u native \u password”对我不起作用……)
谢谢

相关问题