ubuntu中使用mysql出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'

起初没有在意,平时使用mysql时,一般是通过sudo mysql启动,这个命令可以进入到mysq命令行界面。

但是我想要通过mysql-workbench连接本地数据库时,遇到了问题:

 于是我使用mysql尝试输入 mysql -u root -p时,出现了ERROR 1698 (28000): Access denied for user 'root'@'localhost'的问题。

通过https://www.linuxidc.com/Linux/2019-08/159900.htm我得到了解决问题的方式

其他解决方案: https://www.cnblogs.com/fps2tao/p/9950989.html

造成这个问题的原因时得正确的输入相应的密码,一般输入:mysql -u root -pmysql即可,-p后面的mysql是通用的密码,如果遇到了其他Access denied问题,请参考如下

方法一:

通过sudo mysql 进入mysql的控制界面

然后创建一个用户表

步骤一:输入sudo mysql 进入mysql控制窗口

       

    

步骤二:输入show databses;,展示所有的数据库,这时你能够看到mysql这个数据库

    

步骤三:输入use mysql;,然后回车

    输入update user set authenticatin_string=password('输入密码') where user='root'; ,然后回车

    输入flush privileges;,然后回车

    输入exit;,退出mysql控制台

步骤四:命令行输入service mysql restart

    命令行输入mysql -u root -p ,如果不成功进入,则需要做一下修改参考步骤五,否则忽略步骤五。

步骤五:输入sudo mysql,进入mysql控制台

    输入show databases;

    输入use mysql;

    输入show tables;

    输入select user,plugin from user;,这时将看到plugin,root字段为auth_socket,将它修改为mysql_native_password

    输入update user set authentication_string=password('输入密码'),plugin='mysql_native_password' where user='root';

    输入flush privileges,然后输入exit退出

    输入service mysql restart

    这时在控制台输入mysql -u root -p,即可启动成功。

步骤六:这时启动mysql-workbench,点击连接。

方法二:

因为安装的过程中没让设置密码,可能密码为空,因此无论如何都进不去MySQL。

步骤1:设置为不用输入密码

    控制台输入 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    在mysqld处加入skip-grant-tables,这个语句的作用是跳过输入密码

    

     输入wq!保存退出

步骤二:重启mysql服务器

    service mysql restart

    输入mysql  -u root -p,这时在需要输入密码时直接按回车,直接进入mysql控制台

步骤三:启动mysql-workbench 

    这时可以直接连接本地数据库,而无需输入密码

原文地址:https://www.cnblogs.com/nuochengze/p/12565307.html