前段时间不知道什么原因在Linux终端中出现无法启动Mysql的情况,在Linux终端中输入 mysql -uroot -p密码
的时候出现了下面这个错误:
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在网上找了很多解决错误的方法,但跟我的解法方法有些差异,故记录下来以备他人鉴阅。
解决这个错误的关键在于重置Mysql的登录密码。
首先我们先进入到Linux计算机文档界面,如图:
etc目录下有一个mysql
文件夹,网上很多教程的解决方法时候打开etc
目录下的my.cnf
文件,文件中有一个[mysqld]
字段,在这个[mysqld]字段下添加一句skip-grant-tables
但是我打开我的my.cnf
文档后发现并没有这个字段,网上还有一种说法是打开my.ini
文件,我试了下同样没找到,打开后如图所示:
那么这个[mysqld]字段到底在哪个文档里呢?
找了半天终于在我的/etc/mysql.conf.d/
文件夹下有一个mysqld.cnf
文档,在这个文档里可以找到【mysqld】字段,如图:
我们可以这样直接打开这个mysqld.cnf
文档,但它是只读模式,是无法进行编辑保存的。(这里我已经在[mysqld]字段下添加过skip-grant-table
了,在图中可以看到,作用是可以免密登录)
那么我们怎么编辑这个mysqld.cnf文档呢?
在终端中先cd到这个文档的上一级文件夹中
我的是:
在Linux终端输入:
cd /etc/mysqld.conf.d
(进入到这个文件夹中)
然后需要用权限打开这个mysqld.cnf 文件
sudo vi mysqld.cnf
然后找到字段【mysqld】,进入编辑模式(按“i”键),在下面添加skip-grant-tables
当然如果你的[mysqld]字段在my.cnf或者my.ini文档中的话也是这样操作,进入到相应的文件夹中,
打开相应文件,在字段【mysqld】,进入编辑模式(按“i”键),在下面添加skip-grant-tables
添加完成之后,按esc键退出编辑模式,然后:wq进行保存并退出。
接下里的就比较简单了
重启mysql
在终端中输入:
/etc/init.d/mysql restart
然后进入Mysql
mysql -uroot -p (因为已经进行了免密登录操作,此处不用输入密码)
然后进行重置密码:
mysql> update mysql.user set authentication_string=password('你要重置的密码') where user='root' ;(最后不要忘记加";")
如果此处报错,是因为你的mysql版本比较新,这种重置密码的语句已经过时了,你可以用以下语句重置密码:
mysql> update mysql.user set password=password('你要重置的密码') where user='root' and host='localhost';
总有一个好用,信我哥们!(嘿嘿)
下一步:
mysql> flush privileges;
mysql> exit
至此,已完成重置密码的操作,可以重新打开一个终端,输入命令:mysql -uroot -p你的密码
此时应该可以正常登陆了。
嘿嘿