“插件'0'未加载”

时间:2015-08-12 10:13:21

标签: mysql sql plugins upgrade

将MySQL升级到更新版本后,当我想连接到服务器时出错:

 ERROR 1524 (HY000): Plugin '0' is not loaded

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

这看起来像MySQL中的Bug #60432 Modifying mysql.user table can deny users from logging in 。其中说明:

  

如果数据库管理器意外(或故意)修改了mysql.user   通过在低于(或等于)的位置添加任何列的表   " max_user_connections",然后在重新加载权限后没有人   允许登录。

解决方法:撤消在user表格中进行的修改。

答案 1 :(得分:0)

运行以下命令

sudo /etc/init.d/mysql stop

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld

sudo mysqld_safe --skip-grant-tables &

然后按Enter

现在您的密码已重置,您可以再次更改密码

这对我有用

答案 2 :(得分:0)

这确实是MySQL和已更改的用户表结构的错误。不幸的是,如果您不知道更改了什么,就无法将其改回。另外,如果您无法登录,也无法修复任何问题。

我将其修复如下。请注意这些说明,因为它们可能无法完全用于您的设置,并且如果出错,您可能会丢失数据。如果那样的话不要怪我!

1。备份旧数据目录

将旧数据目录备份到某个地方。这使您可以在最后还原表。要找出您的数据目录在哪里,您可以尝试初始化mysql。因为数据目录已经存在,它将给您一个错误:

mysqld initialize

输出:

mysqld: Can't create directory '/usr/local/mysql/data/' (Errcode: 13 - Permission denied)

现在将数据目录备份到某处:

cp -r /usr/local/mysql/data ~/backup-dir/

2。重新初始化MySQL

安全备份数据目录,将其删除并重新初始化mysql。它将为您提供一个新的临时密码,您以后可以更改。

rm -rf /usr/local/mysql/data
mysqld initialise

输出将为您提供“ root”的新密码。如果遇到权限错误,请使用sudo(不确定其缺点)。

使用mysqld_safe启动服务器,以确保它第一次运行:

mysqld_safe

(可选)通过登录mysql并运行alter table来更改root密码:

mysql -u root -p
<enter password>
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New Password';

3。恢复数据

停止mysql服务器

mysqld stop

将所有备份文件复制到新的数据目录(对需要还原的每个数据库运行此文件):

cp -r ~/backup-dir/data/<dbname> /usr/local/mysql/data/

对于MyISAM表,这就足够了。如果您有InnoDB表,还需要从备份中复制InnoDB表空间:

cp ~/backup-dir/data/ibdata* /usr/local/mysql/data/

然后,修复权限(查看/ usr / local / mysql / data中已经存在的文件以获得正确的权限,对于用户和组,我的文件都是“ mysql”):

chown -R mysql:mysql /usr/local/mysql/data/*

启动mysql服务器

mysqld start

全部完成!您应该能够再次登录,并且表也应该包含所有数据。

答案 3 :(得分:0)

我找到了解决此问题的方法...

  1. 更改配置文件--my.cnf(通常在/etc/my.cnf中)
  2. 在[mysqld]下面添加“跳过授予表”
  3. 现在您可以登录mysql了!备份数据库并重新安装mysql

我认为这将完全解决问题。 (未加载插件0,我发现我当时无法备份数据库。因此您需要在mysql.cnf中添加一些内容)