起初没有在意,平时使用mysql时,一般是通过sudo mysql启动,这个命令可以进入到mysq命令行界面。
但是我想要通过mysql-workbench连接本地数据库时,遇到了问题:
![](https://i-blog.csdnimg.cn/blog_migrate/cb0f7892d1d0f7ed13211d09d91fa730.png)
于是我使用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控制窗口
![](https://i-blog.csdnimg.cn/blog_migrate/bce63ec9aba93313b1ae48c8bf2637c0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fb7bd85394ca445486501c6b0176a4a3.png)
步骤二:输入show databses;,展示所有的数据库,这时你能够看到mysql这个数据库
![](https://i-blog.csdnimg.cn/blog_migrate/0658cb920dca4f545cf5e2cb884a852a.png)
步骤三:输入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,这个语句的作用是跳过输入密码
![](https://i-blog.csdnimg.cn/blog_migrate/ca6a8a7714b71d395a4143c99cf5be4c.png)
输入wq!保存退出
步骤二:重启mysql服务器
service mysql restart
输入mysql -u root -p,这时在需要输入密码时直接按回车,直接进入mysql控制台
步骤三:启动mysql-workbench
这时可以直接连接本地数据库,而无需输入密码