起初没有在意,平时使用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我得到了解决问题的方式
方法一:
通过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
这时可以直接连接本地数据库,而无需输入密码