将MySQL升级到更新版本后,当我想连接到服务器时出错:
ERROR 1524 (HY000): Plugin '0' is not loaded
有什么想法吗?
答案 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和已更改的用户表结构的错误。不幸的是,如果您不知道更改了什么,就无法将其改回。另外,如果您无法登录,也无法修复任何问题。
我将其修复如下。请注意这些说明,因为它们可能无法完全用于您的设置,并且如果出错,您可能会丢失数据。如果那样的话不要怪我!
将旧数据目录备份到某个地方。这使您可以在最后还原表。要找出您的数据目录在哪里,您可以尝试初始化mysql。因为数据目录已经存在,它将给您一个错误:
mysqld initialize
输出:
mysqld: Can't create directory '/usr/local/mysql/data/' (Errcode: 13 - Permission denied)
现在将数据目录备份到某处:
cp -r /usr/local/mysql/data ~/backup-dir/
安全备份数据目录,将其删除并重新初始化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';
停止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)
我找到了解决此问题的方法...
我认为这将完全解决问题。 (未加载插件0,我发现我当时无法备份数据库。因此您需要在mysql.cnf中添加一些内容)