ubuntu系统mysql免密登录和拒绝登录踩坑(Access denied for user ‘root‘@‘localhost‘) |
您所在的位置:网站首页 › musql拒绝访问 › ubuntu系统mysql免密登录和拒绝登录踩坑(Access denied for user ‘root‘@‘localhost‘) |
目录
一、免密登录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 |