当前位置:   article > 正文

MYSQL——ERROR1698(28000):Access denied for user root@localhost_mysql.connector.errors.programmingerror: 1698 (280

mysql.connector.errors.programmingerror: 1698 (28000): access denied for use

MYSQL——ERROR1698(28000):Access denied for user root@localhost

安装环境:

  Ubuntu18.04+Mysql5.7。通过以下命令进行了安装:

sudo apt install mysql-server-5.7
  • 1

结果在安装完成后通过root用户登录时报了上面的问题,其实就是因为安装过程中也没有设置过root用户的登录密码。

解决方法:

1、修改mysqld.cnf配置文件

  找到并打开mysqld.cnf,然后在该配置文件中的[mysqld]标签下最后一行加入skip-grant-tables

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
#
# * Basic Settings
#
user              = mysql
pid-file          = /var/run/mysqld/mysqld.pid
socket           = /var/run/mysqld/mysqld.sock
port              = 3306
basedir          = /usr
datadir          = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir   = /usr/share/mysql
skip-external-locking
character-set-server=utf8
collation-server=utf8_general_ci
skip-grant-tables    <-- add here
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

  添加了这句话以后,我们就可以不用密码登录就能进入mysql了,在修改保存之后,重启mysql服务:

service mysql restart
  • 1
2、设置root密码

  在步骤1后,在终端上输入mysql -u -root -p,提示输入密码时直接回车即可,此时发现你已经进入到mysql了,而后输入以下命令:

use mysql;   #然后敲回车
update user set authentication_string=password("你的密码") where user="root";  #然后敲回车
flush privileges;  #然后敲回车
  • 1
  • 2
  • 3
结果如上图,最后输入`quit;`,退出mysql。
3、注释掉skip-grant-tables

  重新编辑mysqld.cnf,将步骤1中添加的skip-grant-tables语句注释掉。

[mysqld]
#
# * Basic Settings
#
user              = mysql
pid-file          = /var/run/mysqld/mysqld.pid
socket           = /var/run/mysqld/mysqld.sock
port              = 3306
basedir          = /usr
datadir          = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir   = /usr/share/mysql
skip-external-locking
character-set-server=utf8
collation-server=utf8_general_ci
# skip-grant-tables    <-- add # here
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

  再返回终端重启mysql服务,而后输入mysql -u root -p,密码输入步骤2中设置的密码,回车后应该就可以进入数据库了,如果不行,转到步骤4。

4、可能遇到的问题

  发现在经过步骤3之后,还是会报之前的错误,此时参照步骤3,将注释的那条语句取消注释(删除’#'号),重启mysql后重新进入mysql。而后选择数据库mysql use mysql;,然后输入select user,plugin from user;如下图所示:

  从图中可以看到在执行了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';
  • 1

  然后回车执行,再输入select user,plugin from user;回车运行,发现root用户的字段改成功了。

  最后quit退出,再执行步骤3就可以了(这里注意不要手欠执行flush privileges;到这里无需刷新权限,不然可能导致失败)。
  MYSQL默认是区分大小写的,若想取消掉,可以按照上述方法找到并打开mysqld.cnf,然后在该配置文件中的[mysqld]标签下最后一行加入`lower_case_table_names = 1`
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/944388
推荐阅读
相关标签
  

闽ICP备14008679号