如何重置默认' root' MySQL 5.7上的用户行为

时间:2016-10-10 23:07:42

标签: mysql

我很满意新的MySQL 5.7' root'用户行为。它只允许localhost上的linux root用户以MySQL root用户身份登录MySQL。

我最近导入了我的旧用户表并写了这个更改,现在任何人都可以使用密码以root身份登录localhost。

如何恢复默认的MySQL 5.7 root用户设置?

请仔细阅读此问题,因为很多此功能已从5.5更改为5.7,并且很容易向后回答此问题。

1 个答案:

答案 0 :(得分:3)

<强>问题:

如果您通过导入旧的auth_socket数据库和用户表来覆盖5.7更改,则需要在root用户上手动安装并启用MySQL 5.5模块。

<强>解决方案:

对于我们仍希望使用mysql_native_password的用户,默认设置。对于root,我们希望使用auth_socket

install plugin auth_socket soname 'auth_socket.so';
use mysql; update user set plugin='mysql_native_password';
update mysql.user set plugin = 'auth_socket' where User='root';
flush privileges;

如果您按错误的顺序执行此操作(在安装插件之前添加root&#39; auth_socket列),那么您将无法加载mysql,因为该插件赢了&#39;执行身份验证。要以安全模式启动和运行mysql,请使用以下命令:

sudo service mysql stop
sudo mysqld_safe --skip-grant-table &
sudo mysql -u root -p -h localhost

在将完整数据库和用户表从MySQL 5.5导入MySQL 5.7并从Ubuntu 14.04迁移到Ubuntu 16.04时执行了这些修补程序。

工具

请参阅插件:show plugins \g

在root用户上显示auth_socket:select auth_socket from mysql.user where user='root';