ubuntu系统mysql免密登录和拒绝登录踩坑(Access denied for user ‘root‘@‘localhost‘)

您所在的位置:网站首页 musql拒绝访问 ubuntu系统mysql免密登录和拒绝登录踩坑(Access denied for user ‘root‘@‘localhost‘)

ubuntu系统mysql免密登录和拒绝登录踩坑(Access denied for user ‘root‘@‘localhost‘)

2024-07-16 22:06| 来源: 网络整理| 查看: 265

目录 一、免密登录1、编辑mysqld.cnf文件2、重启mysql服务:3、修改密码:4、刷新权限并退出5、重新修改mysqld.cnf文件去掉免密登录6、重新进入mysql修改密码 二、拒绝登录踩坑1、拒绝的原因2、修改 root的plugin3、刷新和重启

一、免密登录

忘记mysql密码时使用免密登录重置密码。

1、编辑mysqld.cnf文件

mysqld.cnf 文件在目录‘/etc/mysql/mysql.conf.d/’中,

cd /etc/mysql/mysql.conf.d/ sudo vi mysqld.cnf

输入i进入vi编辑模式。 在文件中找到 [mysqld] 下面的 skip-external-locking 一行,在此行下面增加一行 skip-grant-tables 例如:

[mysqld] ... ... skip-external-locking skip-grant-tables

增加完成后按esc退出,再按‘:'进入末行编辑,输入wq,(wq保存并退出)。

2、重启mysql服务: sudo service mysql restart 3、修改密码:

再ubuntu终端输入mysql进入MySQL,输入USE mysql切换至mysql数据库

mysql USE mysql

先把密码设为空:

UPDATE mysql.user SET authentication_string=password('') WHERE User='root' AND Host ='localhost'; 4、刷新权限并退出 flush privileges; quit 5、重新修改mysqld.cnf文件去掉免密登录 cd /etc/mysql/mysql.conf.d/ sudo vi mysqld.cnf

此时进入vi,因为有可能前面打开过可能会让你选择打开模式是只读还是修改等,输入E即可:

Swap file ".mysqld.cnf.swp" already exists! [O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:E

把开始免密登录行注释掉:

[mysqld] ... ... skip-external-locking # skip-grant-tables 6、重新进入mysql修改密码

笔者修改时比较小心,分了六部,其实第六步直接在第三步中完成应该也可以,请自行测试。

mysql -uroot -p Enter password: update user set authentication_string=password('123456') where user='root'; flush privileges; quit; 二、拒绝登录踩坑

当时在ubuntu上登录遇到了下面的情况

~$ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost'

使用sudo mysql -u root -p 则正常,这本身倒是没什么,但是问题是:使用python的pymysql模块connect链接服务器时仍然时拒绝登录呀,程序开发注意还是让程序自动连接和处理一些数据的,所以这个问题还得解决。

1、拒绝的原因

那么先使用sudo mysql -u root -p登录进去,查看一下user表。

mysql> select user, plugin from mysql.user; +-----------+-----------------------+ | user | plugin | +-----------+-----------------------+ | root | auth_socket | | mysql.sys | mysql_native_password | | dev | mysql_native_password | +-----------+-----------------------+ 3 rows in set (0.01 sec)

错误的原因就是在 root的plugin为auth_socket,用密码登陆的plugin应该是mysql_native_password。

2、修改 root的plugin update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';

这里时同时修改了一个新密码和root的plugin,如果不设置新密码可以省去,例如:

UPDATE mysql.user SET plugin="mysql_native_password"; 3、刷新和重启 flush privileges; quit; sudo service mysql restart


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3