我很满意新的MySQL 5.7' root'用户行为。它只允许localhost上的linux root用户以MySQL root用户身份登录MySQL。
我最近导入了我的旧用户表并写了这个更改,现在任何人都可以使用密码以root身份登录localhost。
如何恢复默认的MySQL 5.7 root用户设置?
请仔细阅读此问题,因为很多此功能已从5.5更改为5.7,并且很容易向后回答此问题。
答案 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';