CentOS7 MySql Authentication plugin 'sha256_password' cannot be loaded

mysql8 Yii2 · systemofdown · 于 9个月前 发布 · 1160 次阅读

今天遇到一个神奇的错误如下:

[error][yii\db\Exception] PDOException: SQLSTATE[HY000] [2059] Authentication plugin 'sha256_password' cannot be loaded: /usr/lib64/mysql/plugin/sha256_password.so: 无法打开共享对象文件: 没有那个文件或目录

主机,CentOS 7 + php7.2,由于web服务器和数据库服务器分离,所以就没有安装mysql,系统中是默认的mariadb。

用户密码模式为mysql自带验证模式。

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

⚠️ 注意,这种方法可能会降低MySQL的安全性,因为mysql_native_password插件不提供与caching_sha2_password相同的安全性。

当链接远程的数据库服务器时,仍然提示了上面的错误。

解决方案一,安装mysql-server

yum install https://dev.mysql.com/get/mysql80-community-release-el7-9.noarch.rpm
sudo yum install mysql-community-server

重启php-fpm

service php-fpm reload

解决方案二,yii2数据库连接配置

在你的Yii配置文件(config/db.php)中,你可以指定使用'mysql_native_password'作为认证插件。以下是一个例子:

return [
    'class' => 'yii\db\mysql\Connection',
    'dsn' => 'mysql:host=localhost;dbname=mydatabase',
    'username' => 'myusername',
    'password' => 'mypassword',
    'charset' => 'utf8',
    'attributes' => [
        // 使用 'mysql_native_password' 插件进行认证
        \yii\db\Connection::ATTR_AUTH_PLUGIN => 'mysql_native_password',
    ],
];

本文由 systemofdown 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册