#最开始选择在Ubuntu上用apt-get安装mysql,
安装完成后在使用Navicat远程连接安装的mysql时,报错1698(28000),笔者使用在全局的root权限下,用mysql的root用户登录,可以用设置的密码登录;但是使用服务器的非root用户,再登录mysql的root用户时,此时即报上述错误。
最后归其原因是:在mysql中用于身份验证的plugin插件被改为了auth_socket
select host,user,plugin from user;
auth_socket,这意味着任何来自任何主机(%表示任意主机)的root用户都使用auth_socket插件进行身份验证。auth_socket插件通常用于Unix套接字文件认证,它允许系统用户如果他们拥有与MySQL用户相同的用户名,则无需密码即可登录。也就是说,我原本认为的使用全局root用户登录mysql的root用户时,使用密码可以正常登录是错误的,此时是可以直接无需密码登录,笔者试验后发现果真如此,所以问题的最开始的出发点便错了。
要修改root
用户的身份验证插件,您可以使用以下命令:
ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'your_password';
替换your_password
为您希望设置的密码。执行这些命令后,您需要运行FLUSH PRIVILEGES;
来使更改生效。
FLUSH PRIVILEGES;
以上内容是在,已经
修改 用户表中 root的权限,从localhost修改为允许任何ip连接,即%
use mysql;
select Host,User from user;
update user set Host='%' where User='root'; #用户表中的权限已由'localhost'改'%'
修改mysql配置文件中的内容
vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address=127.0.0.1 修改为 bind-address=0.0.0.0 允许来自任何地址连接
mysql中root用户的所有权限已经开放
show grants #查询赋予用户的权限
笔者是通过后面文章解决的问题,加以总结形成上文,原文作者:唯一Chat 文章地址:[MySQL] 解决Error 1698: Access denied for user 'root'@'localhost'-腾讯云开发者社区-腾讯云